Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 672 Просмотров
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Решение, часть 1: Формирование url всех товаров
Решение, часть 2: Формирование url всех товаров

Здравствуйте.
Joomla! 3.9.22
JoomShopping Version 4.18.4

Сейчас url товаров формируются таким образом. Если я нахожусь в категории, допустим, site.ru/category1, то ссылка на товар из этой категории будет вида site.ru/category1/алиас_товара. Если зайти в другую категорию, к которой прикреплен ЭТОТ ЖЕ товар (category2), то ссылка на него будет уже такая: site.ru/category2/алиас_товара. Если перейти в подкатегорию категории category2, к которой прикреплен ЭТОТ ЖЕ товар (sub_cat), то ссылка будет уже такая: site.ru/category2/sub_cat/алиас_товара. Ко всему прочему — это дубли.

Знаю, что есть плагины, аддоны на форуме, которые помогают делать url-ы товаров либо с полным перечнем категорий, либо делают так, что в урле остается только главная категория.

Но мне нужно, чтобы ВСЕ url-ы товара выглядели следующим образом:
site.ru/catalog/алиас_товара
Пункт меню catalog создан, выводит все товары магазина.

Как сделать так, чтобы url всех товаров, откуда бы на них не переходили был всегда один (site.ru/catalog/алиас_товара)?

Заранее благодарен.
« Последнее редактирование: 04.11.2020, 17:32:37 от Ragnarok »
*

kit2m2

  • Живу я здесь
  • 3269
  • 268 / 0
  • Беру сайты на полное сопровождение
Re: Формирование url всех товаров
« Ответ #1 : 03.11.2020, 13:26:06 »
Сейчас url товаров формируются таким образом. Если я нахожусь в категории, допустим, site.ru/category1, то ссылка на товар из этой категории будет вида site.ru/category1/алиас_товара. Если зайти в другую категорию, к которой прикреплен ЭТОТ ЖЕ товар (category2), то ссылка на него будет уже такая: site.ru/category2/алиас_товара. Если перейти в подкатегорию категории category2, к которой прикреплен ЭТОТ ЖЕ товар (sub_cat), то ссылка будет уже такая: site.ru/category2/sub_cat/алиас_товара. Ко всему прочему — это дубли.

По мне это конечно бред, что я сейчас прочитал... Один вопрос; Зачем?

Но может это поможет - JoomShopping Addons: Product Seo...

Другого нет, это точно. Главное не забудьте про это - JoomShopping Plugins: Product / category canonical
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Re: Формирование url всех товаров
« Ответ #2 : 03.11.2020, 13:42:09 »
По мне это конечно бред, что я сейчас прочитал... Один вопрос; Зачем?

Но может это поможет - JoomShopping Addons: Product Seo...

Другого нет, это точно. Главное не забудьте про это - JoomShopping Plugins: Product / category canonical

Это не бред — занимаюсь переносом сайта с Joomla 2x на Joomla 3x. Просто обновить Joomla и JoomShopping — не вариант, т.к. до меня делались правки в ядре, соответственно, весь функционал магазина при обновлении "полетит". Поэтому перенос в полу-ручном режиме. На Joomla 2x каким-то образом сделали формирование урлов именно таким (site.ru/catalog/алиас_товара). Каким образом это сделали — я так и не понял. Облазил код вдоль и поперек, искал по слову catalog в файлах сайта, искал по id пункта меню с урлом "catalog" — все тщетно. Не нашел (но это где-то там есть). В любом случае, там скорее всего реализовано через правки в ядре. А мне бы как-нибудь через плагин/аддон, чтобы правок в ядре не делать.

Для SEO все урлы должны быть сохранены.
*

kit2m2

  • Живу я здесь
  • 3269
  • 268 / 0
  • Беру сайты на полное сопровождение
Re: Формирование url всех товаров
« Ответ #3 : 03.11.2020, 13:51:55 »
Для SEO все урлы должны быть сохранены.
Каким образом это сделать без дублей о которых Вы писали?

Я тоже недавно переносил с 2.5 на 3.9, так вот мы (с клиентом) просто отвязали все товары от корневых категорий и оставили только в конечных категориях (подкатегориях)

А еще выяснилось, что привязка в нескольким категориям одного и того же товара обоснована только для двух категорий (из свыше четырехсот категорий)

Если кто-то раньше сделал неправильно это не значит что нужно это тащить всю жизнь. Лучше вовремя исправить...
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Формирование url всех товаров
« Ответ #4 : 03.11.2020, 14:14:01 »
вроде бы тут похожая тема была
Убрать категории из URL товара
*

kit2m2

  • Живу я здесь
  • 3269
  • 268 / 0
  • Беру сайты на полное сопровождение
Re: Формирование url всех товаров
« Ответ #5 : 03.11.2020, 14:17:51 »
вроде бы тут похожая тема была

2014 год?
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Формирование url всех товаров
« Ответ #6 : 03.11.2020, 14:21:59 »
да дело не в годе
чисто на почитать
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Re: Формирование url всех товаров
« Ответ #7 : 04.11.2020, 11:54:09 »
вроде бы тут похожая тема была
Убрать категории из URL товара
Спасибо! Прочтение темы навело на мысль.
Методом научного тыка удалось сделать так, чтобы дубли отдавали 404.
Как сделал?
У меня на сайте уже стоял аддон "JoomShopping Product Seo".
Также было создано меню "Категории" с вложенностью. Пункты меню привязаны к категориям JSH, поэтому этот аддон не работал в полной мере. Прочитав тему, ссылку на которую вы дали, понял, что в аддоне можно как-то не учитывать привязку к меню и закомментировал в нем строки 38-40 (/plugins/jshoppingrouter/jshopping_product_seo/jshopping_product_seo.php), где идет вызов метода _checkJSCategoryCurentMenuItem();.

Все работает хорошо, товары открываются по адресу /catalog/алиас_товара, по остальным адресам — 404. НО! На страницах категорий и везде, где идет вывод карточек товаров (сопутствующие товары и т.п.), урлы у этих карточек остались прежними, с перечнем категорий.

Подскажите, пожалуйста, какой участок кода в router.php отвечает за этот вывод? Или где-то в другом месте. Хочу сделать через плагин.
Есть еще вариант — переопределить через плагин вывод $product->product_link в листингах товаров (onBeforeDisplayProductListView и onBeforeDisplayProductView), либо вообще в шаблонах вывода вручную прописать "/catalog/...", но это, наверное, не комильфо.
« Последнее редактирование: 04.11.2020, 12:50:11 от Ragnarok »
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Re: Формирование url всех товаров
« Ответ #8 : 04.11.2020, 16:54:08 »
В общем, решил задачу. Переопределил $product->product_link в листингах товаров.
Для этого переделал плагин Fix double link category https://www.webdesigner-profi.de/joomla-webdesign/shop/plugins/fix-double-link-category.html

Вот код переделанного плагина (все, что закомментировано, можно убрать, оставил для наглядности):
Код
defined( '_JEXEC' ) or die( 'Restricted access' );

class plgJshoppingDouble_link extends JPlugin {

public function __construct(& $subject, $config){
parent::__construct($subject, $config);
}

public function onBeforeDisplayProductListView(&$view){
foreach($view->rows as $k=>$v){
//$category_id = $this->getFirstCategoryId($v->product_id);
//$view->rows[$k]->product_link = SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$category_id.'&product_id='.$v->product_id);
$prod_lnk_ex = explode("/", $view->rows[$k]->product_link);
$view->rows[$k]->product_link = "catalog/".array_pop($prod_lnk_ex);
}
}

public function onBeforeDisplayProductView(&$view){
foreach($view->related_prod as $k=>$v){
//$category_id = $this->getFirstCategoryId($v->product_id);
//$view->related_prod[$k]->product_link = SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$category_id.'&product_id='.$v->product_id);
$prod_lnk_ex = explode("/", $view->related_prod[$k]->product_link);
$view->related_prod[$k]->product_link = "catalog/".array_pop($prod_lnk_ex);
}
}

/*private function getFirstCategoryId($pid){
$db = JFactory::getDBO();
        $user = JFactory::getUser();
        $groups = implode(',', $user->getAuthorisedViewLevels());
        $adv_query =' AND cat.access IN ('.$groups.')';
        $query = "SELECT pr_cat.category_id FROM `#__jshopping_products_to_categories` AS pr_cat
                LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
                WHERE pr_cat.product_id=".(int)$pid." AND cat.category_publish=1 ".$adv_query;
        $db->setQuery($query);
        return $db->loadResult();
}*/
}

Вместо "catalog", кстати, можно написать любой префикс к урлам (видел, что на форуме многие задавали подобный вопрос), но, скорее всего нужно будет создавать пункт меню с нужным алиасом (catalog, magazin и т.п.).

Стоит отметить, что страница "catalog" у меня на сайте существует реально. Это пункт меню типа "JoomShopping » Список категорий / Магазин". Также у меня есть меню для тегов (категории 3-го уровня в JSH, которые выводятся на странице категории сверху в виде ссылок вроде "для женщин", "для мужчин", и т.п.), в котором созданы пункты меню типа "Ссылка (URL)", ведущие на такой адрес: "//magazin.ru/catalog/алиас_категории_JSH". Также у категоний в JSH 1-го и 2-го уровней нет алиасов, они пустые и берутся из алиасов пунктов меню "Категории" (в предыдущем посте писал про это меню). У категорий 3-го уровня алиасы есть, как писал выше. Быть может все это важно для того, чтобы работало то, что выше.

Всем спасибо за помощь!
« Последнее редактирование: 04.11.2020, 17:39:32 от Ragnarok »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Фильтр товаров для JoomShopping 5

Автор Lemonez

Ответов: 13
Просмотров: 796
Последний ответ 12.04.2024, 21:20:02
от nevigen
WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 13
Просмотров: 2069
Последний ответ 03.04.2024, 14:24:38
от sergeytolkachyov
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 1
Просмотров: 445
Последний ответ 10.01.2024, 19:54:00
от sergeytolkachyov
Вывести название категории в списке товаров

Автор ataman

Ответов: 9
Просмотров: 3524
Последний ответ 15.09.2023, 20:31:11
от Alex_gs
[JoomShopping 5] вывод товаров из дочерних категорий

Автор v42bis

Ответов: 14
Просмотров: 1245
Последний ответ 18.05.2023, 16:35:40
от nevigen