Перейти к содержимому


Фотография
- - - - -

Автоматическая генерация descriptoin, keywords для товаров и категорий


Сообщений в теме: 9

#1 repato

repato

Отправлено 17 November 2015 - 11:58

Здравствуйте, скажите пожалуйста как сделать автоматическую генерацию descriptoin, keywords для товаров и категорий? Например, чтобы в description и keywords дублировалось название товара для товара и название категории для категории соответственно. Спасибо!



#2 SmetDenis

SmetDenis

Отправлено 18 November 2015 - 07:36

Попробуйте в шаблоне категории или full добавить
$newTitle = $item->name; // для материала
$newTitle = $item->category; // для категории

$doc = JFactory::getDocument();
$doc->setTitle($newTitle); // заголовок
$doc->setDescription($newTitle); // описание
$doc->setMetaData('keywords', $newTitle); // ключевые слова

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 repato

repato

Отправлено 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 SmetDenis

SmetDenis

Отправлено 20 November 2015 - 08:06

мета информацией можно управлять из любого расширения Joomla. Видимо у вас что-о перебивает их.

У меня код работает.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 repato

repato

Отправлено 22 November 2015 - 08:07

мета информацией можно управлять из любого расширения Joomla. Видимо у вас что-о перебивает их.

У меня код работает.

В элементах код работает, спасибо! В категориях нет. В категориях сделал вот так:

$newTitle = $category->name;
$document->setTitle($newTitle);
$document->setDescription($newTitle); // описание
$document->setMetaData('keywords', $newTitle); // ключевые слова

 

В итоге подставляется имя категории, но если тайтл заполнить из админки, то он не применяется. Как сделать, чтобы применялся, подскажите пожалуйста.



#6 SmetDenis

SmetDenis

Отправлено 23 November 2015 - 08:08

Zoo и JBZoo верно устанавливают заголовки.
Дело в том что 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);
            }
        }
    }
}
i60i_200x0.png

Функция onBeforeCompileHead сработает в последний момент, перед тем как скомпилировать HMTL для тега head, поэтому установит meta наверняка. Её могут перебить только очень специфические плагины.

Прикрепленные файлы

  • Прикрепленный файл  jsystem.php   4.3К   52 Количество загрузок:

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 isay777

isay777

Отправлено 23 November 2015 - 10:27

Может как-то в рецепты эту тему прикрепить? 

Так как по meta частенько бывают вопросы. 


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#8 SmetDenis

SmetDenis

Отправлено 23 November 2015 - 11:47

isay777 , Я скопировал из своего старого рецепта - http://forum.jbzoo.c...s-menyu-joomla/ из категории для "плюсов"
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 repato

repato

Отправлено 27 November 2015 - 10:17


Сделал так как вы и сказали, все работает не совсем так как нужно.
 
У меня была задача, чтобы если тайтл категорий заполнен из админки, то выводится он, если же он не заполнен то должно выводиться это:
$document->setTitle($newTitle.' - купить с доставкой по России. Лучшие цены, фото, отзывы!');
 
То есть название категории плюс приставка с тектом. Однако, теперь выводится просто название категории. Хотя теперь на тех страницах, на которых заполнен тайтл выводится, то что заполнено.
 
Можно ли узнать, и как это сделать, как сейчас формиркется тайтл на странице категорий? Спасибо!

#10 SmetDenis

SmetDenis

Отправлено 01 December 2015 - 09:11

Дело в том что нет единого места в коде сайта, где формирует заголовок.
Он устанавливается в совершенно разных частях кода, которые, грубо говоря, не знают о существовании друг друга.
На вскидку я могу назвать 4-5 независимых мест которые влияют на заголовок страницы.

В вашем случае я бы рекомендовал реализовать эту логику либо в отдельном плагине Joomla (чтобы без хаков), либо в том месте которое я показал вам выше. Конечно понадобятся мин знания PHP.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!