Изменить URL адрес товара

Форум Форумы VirtueMart 3 Модификации и доработки Изменить URL адрес товара

В этой теме 3 ответа, 2 участника, последнее обновление  kseniya 2 года/лет, 3 мес. назад.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #160

    Денис
    Хранитель

    В комментариях к статье «Основные настройки VirtueMart 3» был задан вопрос:

    Добрый день, подскажите пожалуйста где можно изменить url, что б при создании товара в его адресе добавлялась приставка «byu» автоматически
    вот пример, заказчик просит так реализовать
    …/категория/buy-название-товара

    Честно признаться, с таким за свою практику я сталкиваюсь впервые, однако, решение есть.
    Нужно отредактировать файл ваш_сайт/components/com_virtuemart/router.php
    И так,
    1. Находим в данном файле следующие строки:

    $this->seo_sufix = '';
    $this->seo_sufix_size = 0;

    и сразу после них вставляем

    $this->seo_prefix = 'buy-';
    $this->seo_prefix_size = 4;

    при этом, вместо префикса ‘buy-‘ может быть любой на ваше усмотрение, но обратите внимание, что значение переменной seo_prefix_size должно быть равно длине вашего префикса.
    2. Находим следующий код
    $productNamesCache[$id] = $pr->slug.$this->seo_sufix;
    и меняем его на
    $productNamesCache[$id] = $this->seo_prefix.$pr->slug.$this->seo_sufix;
    3. После строк

    if($this->use_seo_suffix and !empty($this->seo_sufix_size) ){
    	if(substr($productName, -(int)$this->seo_sufix_size ) !== $this->seo_sufix) {
    		return array('virtuemart_product_id' =>0, 'virtuemart_category_id' => false);
    	}
    	$productName =  substr($productName, 0, -(int)$this->seo_sufix_size );
    }

    вставляем

    if($this->seo_prefix_size != 0) {
    	$productName =  substr($productName, (int)$this->seo_prefix_size);
    }

    Не забываем сохранить изменения.
    В результате мы получаем вот такую ссылку на товар:

    http://virtuemart.local/index.php/headpiece/buy-safety-helmet-detail

    Так же обращаю внимание, что после обновления VirtueMart данные изменения будут потеряны, и вам придется проделывать вышеперечисленные изменения заново.

    • Тема изменена 2 года/лет, 7 мес. назад пользователем  Денис.
    • Тема изменена 2 года/лет, 7 мес. назад пользователем  Денис.
    #163

    kseniya
    Участник

    добрый день, подскажите пожалуйста, у меня не получается отключить seo_sufix

    подключила по вашему объяснению seo_prefix )) спасибо все отлично работает.
    возможно ли что б  seo_prefix оставить, а seo_sufix  отключить

    #164

    kseniya
    Участник

    пока нашла решение — — просто удалив detali, вроде работает

    #165

    kseniya
    Участник

    Здравствуйте, подскажите пожалуйста
    при переключении языка, находясь в карточке товара, переключает на категорию (когда переключаю язык — выбрасывает из карточки товара в категорию)

    Необходимо при смене языка оставаться в карточке товара.
    Возможно кто то сталкивался, может есть какое-то решение ))

  • Автор
    Сообщения
  • #160

    Денис
    Хранитель
    • Оффлайн

    В комментариях к статье «Основные настройки VirtueMart 3» был задан вопрос:

    Добрый день, подскажите пожалуйста где можно изменить url, что б при создании товара в его адресе добавлялась приставка «byu» автоматически
    вот пример, заказчик просит так реализовать
    …/категория/buy-название-товара

    Честно признаться, с таким за свою практику я сталкиваюсь впервые, однако, решение есть.
    Нужно отредактировать файл ваш_сайт/components/com_virtuemart/router.php
    И так,
    1. Находим в данном файле следующие строки:

    $this->seo_sufix = '';
    $this->seo_sufix_size = 0;

    и сразу после них вставляем

    $this->seo_prefix = 'buy-';
    $this->seo_prefix_size = 4;

    при этом, вместо префикса ‘buy-‘ может быть любой на ваше усмотрение, но обратите внимание, что значение переменной seo_prefix_size должно быть равно длине вашего префикса.
    2. Находим следующий код
    $productNamesCache[$id] = $pr->slug.$this->seo_sufix;
    и меняем его на
    $productNamesCache[$id] = $this->seo_prefix.$pr->slug.$this->seo_sufix;
    3. После строк

    if($this->use_seo_suffix and !empty($this->seo_sufix_size) ){
    	if(substr($productName, -(int)$this->seo_sufix_size ) !== $this->seo_sufix) {
    		return array('virtuemart_product_id' =>0, 'virtuemart_category_id' => false);
    	}
    	$productName =  substr($productName, 0, -(int)$this->seo_sufix_size );
    }

    вставляем

    if($this->seo_prefix_size != 0) {
    	$productName =  substr($productName, (int)$this->seo_prefix_size);
    }

    Не забываем сохранить изменения.
    В результате мы получаем вот такую ссылку на товар:

    http://virtuemart.local/index.php/headpiece/buy-safety-helmet-detail

    Так же обращаю внимание, что после обновления VirtueMart данные изменения будут потеряны, и вам придется проделывать вышеперечисленные изменения заново.

    • Тема изменена 2 года/лет, 7 мес. назад пользователем  Денис.
    • Тема изменена 2 года/лет, 7 мес. назад пользователем  Денис.
    #163

    kseniya
    Участник
    • Оффлайн

    добрый день, подскажите пожалуйста, у меня не получается отключить seo_sufix

    подключила по вашему объяснению seo_prefix )) спасибо все отлично работает.
    возможно ли что б  seo_prefix оставить, а seo_sufix  отключить

    #164

    kseniya
    Участник
    • Оффлайн

    пока нашла решение — — просто удалив detali, вроде работает

    #165

    kseniya
    Участник
    • Оффлайн

    Здравствуйте, подскажите пожалуйста
    при переключении языка, находясь в карточке товара, переключает на категорию (когда переключаю язык — выбрасывает из карточки товара в категорию)

    Необходимо при смене языка оставаться в карточке товара.
    Возможно кто то сталкивался, может есть какое-то решение ))

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)

Для ответа в этой теме необходимо авторизоваться.