Автор Тема: Как добавить номера страниц в title  (Прочитано 1273 раз)

06 Август 2020, 11:04:22
Ответ #15
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ!

По поводу "Если у вас Title и Description определены в шаблоне, а не формируются в контроллере, то изменить их можно через javascript."
С этим не смог разобраться пока.
А по поводу первого вопроса...
По отдельности у меня прописаны и "p" и "frat", но когда они вместе в URL прописаны (http://.../?p=2&frat=2), то эти правила не срабатывают и прописывается только последнее из указанных в URL, в данном случае при URL http://.../?p=2&frat=2 в Title попадет только значение "P" (почету то). Вот я и не могу разобраться с этим вариантом.
И как все таки анализатор написать??? :)
06 Август 2020, 11:11:41
Ответ #16
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У вас переменная frat в контроллере FrontController обрабатыватся? Что она делает, для чего?
06 Август 2020, 11:16:13
Ответ #17
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас переменная frat в контроллере FrontController обрабатыватся? Что она делает, для чего?
Это я пока тоже не понял. Похоже от модуля ContentPack это. Так как на других разделах этого не наблюдаю.
И в Title заносится все таки значение второй переменной, а не второй (извиняюсь за введение в заблуждение).
06 Август 2020, 11:27:28
Ответ #18
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
PS 1.6.24.
Для справки. В prestashop 1.6 не нужно добавлять ничего для вывода номеров страниц в meta, так как в контроллере есть такая функция
public static function getCategoryMetas($id_category, $id_lang, $page_name, $title = '')
    {
        if (!empty($title)) {
            $title = ' - '.$title;
        }
        $page_number = (int)Tools::getValue('p');
        $sql = 'SELECT `name`, `meta_title`, `meta_description`, `meta_keywords`, `description`
FROM `'._DB_PREFIX_.'category_lang` cl
WHERE cl.`id_lang` = '.(int)$id_lang.'
AND cl.`id_category` = '.(int)$id_category.Shop::addSqlRestrictionOnLang('cl');

        $cache_id = 'Meta::getCategoryMetas'.(int)$id_category.'-'.(int)$id_lang;
        if (!Cache::isStored($cache_id)) {
            if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) {
                if (empty($row['meta_description'])) {
                    $row['meta_description'] = strip_tags($row['description']);
                }

                // Paginate title
                if (!empty($row['meta_title'])) {
                    $row['meta_title'] = $title.$row['meta_title'].(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                } else {
                    $row['meta_title'] = $row['name'].(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                }

                if (!empty($title)) {
                    $row['meta_title'] = $title.(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                }

                $result = Meta::completeMetaTags($row, $row['name']);
            } else {
                $result = Meta::getHomeMetas($id_lang, $page_name);
            }
            Cache::store($cache_id, $result);
            return $result;
        }
        return Cache::retrieve($cache_id);
 }

У вас движок кастомизирован?
Есть много варинтов есть для изменения мета тегов. Например в /themes/ваша тема/header.tpl
{if isset($meta_description) AND $meta_description}
    {if $page_name == 'category' AND isset($p) AND $p != 1}
        <meta name="description" content="{$meta_description|escape:'html':'UTF-8'} - {l s='Страница'} {$p}" />
для title тоже самое. Еще можно meta_keywords использовать и т.д.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
06 Август 2020, 12:29:45
Ответ #19
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
PS 1.6.24.
Для справки. В prestashop 1.6 не нужно добавлять ничего для вывода номеров страниц в meta, так как в контроллере есть такая функция
public static function getCategoryMetas($id_category, $id_lang, $page_name, $title = '')
    {
        if (!empty($title)) {
            $title = ' - '.$title;
        }
        $page_number = (int)Tools::getValue('p');
        $sql = 'SELECT `name`, `meta_title`, `meta_description`, `meta_keywords`, `description`
FROM `'._DB_PREFIX_.'category_lang` cl
WHERE cl.`id_lang` = '.(int)$id_lang.'
AND cl.`id_category` = '.(int)$id_category.Shop::addSqlRestrictionOnLang('cl');

        $cache_id = 'Meta::getCategoryMetas'.(int)$id_category.'-'.(int)$id_lang;
        if (!Cache::isStored($cache_id)) {
            if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql)) {
                if (empty($row['meta_description'])) {
                    $row['meta_description'] = strip_tags($row['description']);
                }

                // Paginate title
                if (!empty($row['meta_title'])) {
                    $row['meta_title'] = $title.$row['meta_title'].(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                } else {
                    $row['meta_title'] = $row['name'].(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                }

                if (!empty($title)) {
                    $row['meta_title'] = $title.(!empty($page_number) ? ' ('.$page_number.')' : '').' - '.Configuration::get('PS_SHOP_NAME');
                }

                $result = Meta::completeMetaTags($row, $row['name']);
            } else {
                $result = Meta::getHomeMetas($id_lang, $page_name);
            }
            Cache::store($cache_id, $result);
            return $result;
        }
        return Cache::retrieve($cache_id);
 }
Проверил, этот код присутствует. Но не работает эта функция... Возможно из-за модуля Infinite Scroll Premium v1.1.0. или какого то другого... либо на модуле Contentpack это не работает.
У вас движок кастомизирован?
Есть много варинтов есть для изменения мета тегов. Например в /themes/ваша тема/header.tpl
{if isset($meta_description) AND $meta_description}
    {if $page_name == 'category' AND isset($p) AND $p != 1}
        <meta name="description" content="{$meta_description|escape:'html':'UTF-8'} - {l s='Страница'} {$p}" />
для title тоже самое. Еще можно meta_keywords использовать и т.д.

Спасибо, все проверю.