Здравствуйте, скажите пожалуйста как сделать автоматическую генерацию descriptoin, keywords для товаров и категорий? Например, чтобы в description и keywords дублировалось название товара для товара и название категории для категории соответственно. Спасибо!
Автоматическая генерация descriptoin, keywords для товаров и категорий
#1
Posted 17 November 2015 - 11:58
#2
Posted 18 November 2015 - 07:36
$newTitle = $item->name; // для материала $newTitle = $item->category; // для категории $doc = JFactory::getDocument(); $doc->setTitle($newTitle); // заголовок $doc->setDescription($newTitle); // описание $doc->setMetaData('keywords', $newTitle); // ключевые слова
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#3
Posted 18 November 2015 - 08:07
Попробуйте в шаблоне категории или full добавить
$newTitle = $item->name; // для материала $newTitle = $item->category; // для категории $doc = JFactory::getDocument(); $doc->setTitle($newTitle); // заголовок $doc->setDescription($newTitle); // описание $doc->setMetaData('keywords', $newTitle); // ключевые слова
Не получается, title выводится пустой, а keywords и description не выводятся совсем, но если их заполнить вручную из админки они выводятся.
Попробуйте в шаблоне категории или full добавить
Вы имеете ввиду путь по этим адресам? /media/zoo/applications/jbuniversal/templates/catalog/item.php
/media/zoo/applications/jbuniversal/templates/catalog/category.php
#4
Posted 20 November 2015 - 08:06
мета информацией можно управлять из любого расширения Joomla. Видимо у вас что-о перебивает их.
У меня код работает.
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#5
Posted 22 November 2015 - 08:07
мета информацией можно управлять из любого расширения Joomla. Видимо у вас что-о перебивает их.
У меня код работает.
В элементах код работает, спасибо! В категориях нет. В категориях сделал вот так:
$newTitle = $category->name;
$document->setTitle($newTitle);
$document->setDescription($newTitle); // описание
$document->setMetaData('keywords', $newTitle); // ключевые слова
В итоге подставляется имя категории, но если тайтл заполнить из админки, то он не применяется. Как сделать, чтобы применялся, подскажите пожалуйста.
#6
Posted 23 November 2015 - 08:08
Дело в том что Joomla сама перебивает title (скорее всего через пункт меню). Ниже небольшое решение
Откройте файл /media/zoo/applications/jbuniversal/framework/events/jsystem.php
И добавьте в функцию onBeforeCompileHead
$categoryId = $this->app->jbrequest->getSystem('category'); if ($categoryId > 0) { $category = $this->app->table->category->get($categoryId); if ($category) { $params = $category->getParams('site'); $title = $params->get('metadata.title') ? $params->get('metadata.title') : $category->name; if ($title) { $this->app->document->setTitle($this->app->zoo->buildPageTitle($title)); } $description = $params->get('metadata.description'); if ($description) { $this->app->document->setDescription($description); } $keywords = $params->get('metadata.keywords'); if ($keywords) { $this->app->document->setMetadata('keywords', $keywords); } } } $itemId = $this->app->jbrequest->getSystem('item'); if ($itemId) { $item = $this->app->table->item->get($itemId); if ($item) { $title = $item->getParams()->get('metadata.title'); $title = empty($title) ? $item->name : $title; $this->app->document->setTitle($this->app->zoo->buildPageTitle($title)); foreach (array('keywords', 'author', 'robots') as $meta) { if ($value = $item->getParams()->get('metadata.' . $meta)) { $this->app->document->setMetadata($meta, $value); } } } }
Функция onBeforeCompileHead сработает в последний момент, перед тем как скомпилировать HMTL для тега head, поэтому установит meta наверняка. Её могут перебить только очень специфические плагины.
Attached Files
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#8
Posted 23 November 2015 - 11:47
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#9
Posted 27 November 2015 - 10:17
Сделал так как вы и сказали, все работает не совсем так как нужно.
У меня была задача, чтобы если тайтл категорий заполнен из админки, то выводится он, если же он не заполнен то должно выводиться это:
$document->setTitle($newTitle.' - купить с доставкой по России. Лучшие цены, фото, отзывы!');
То есть название категории плюс приставка с тектом. Однако, теперь выводится просто название категории. Хотя теперь на тех страницах, на которых заполнен тайтл выводится, то что заполнено.
Можно ли узнать, и как это сделать, как сейчас формиркется тайтл на странице категорий? Спасибо!
#10
Posted 01 December 2015 - 09:11
Он устанавливается в совершенно разных частях кода, которые, грубо говоря, не знают о существовании друг друга.
На вскидку я могу назвать 4-5 независимых мест которые влияют на заголовок страницы.
В вашем случае я бы рекомендовал реализовать эту логику либо в отдельном плагине Joomla (чтобы без хаков), либо в том месте которое я показал вам выше. Конечно понадобятся мин знания PHP.
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.