Динамически добавлять "купить в магазине" в тайтл

Путь /app/controllers/frontend/pages.post.php (CS-Cart Ultimate)
fn_print_r(‘test’); не показывает (но в categories.post.php и products.post.php тест работает)
Путь /var/www/html/app/addons/my_changes/ у меня там 2 файла addon.xml addon.xml.full
модуль Мои изменения включен
?debug ошибок не показывает.
Создал в ручную с правами 777 /app/addons/my_changes/controllers/frontend/ не работает тест не показывает.
Единственное что meta description берет из подробного описания
товара.
Путь /app/addons/my_changes/controllers/frontend/products.post.php тест показывает

поместите код в products.post.php
вы же дескрипшн для страниц товаров делаете?

1 лайк

Скрестить не удалось. Вопрос почему в моем случае pages.post.php не работает.

Вы в контроллере для страниц (блога, форм и тп) пытаетесь получить массив с данными товара. Поэтому и не работает

Я пытаюсь сделать по инструкции сверху. У Alex7 все работает. Подскажите, пожалуйста, куда это прописать. Сейчас pages.post.php находиться /app/addons/my_changes/controllers/frontend.

Для товаров используйте коньроллер

app/addons/my_changes/controllers/frontend/products.post.php

Спасибо вам и Alex7 за наводки.
Вопрос решен.

Подскажите, кто знает.

В титл выводиться цена вида 123.000 000 шестью нулями, что не красиво.

Код в app/addons/my_changes/controllers/products.post.php

’’’<?php
use Tygh\Registry;
if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }
if ($mode == ‘view’ && !empty($_REQUEST[‘product_id’])) {
$product = Registry::get(‘view’)->getTemplateVars(‘product’);
Registry::get(‘view’)->assign(‘meta_description’, $product[‘product’] . " в интернет-магазине. Доставляем по всей России! " );
//other data can be added to title dynamic also
if(empty($product[‘page_title’])){
Registry::get(‘view’)->assign(‘page_title’, $product[‘product’] ." купить в интернет-магазине - " . $product[‘price’] . " руб.");
}
}’’’

В распечатке $product|fn_print_r

Есть секция

[seo_snippet]
И в ней [price] имеет нормальный вид 123

Как подцепить price из этой секции.

Попробуйте

вместо

$product['price']

такой код

fn_format_price($product['price'])

1 лайк

Работает. Большое спасибо.

1 лайк

Здравствуйте! Подскажите, пожалуйста, как сделать все то же самое, что описано выше, но для страниц категорий?
UPD: только вместо цены товара вывести бы минимальную цену из данной категории. Возможно так?

без минимальной цены

1 лайк

Уже разобрался. Через пост контроллер удобнее получается. Теперь понять бы как проверять заполнено ли поле meta description для товара или категории. А то ядро автоматом заполняет переменные $product[‘meta_description’] и $category_data[‘meta_description’]

Ядро автоматом не заполняет. Либо у вас модуль какой-то стоит, либо значение подтягивается из соответсвующих настроек страницы макеты

Можете тогда уточнить что делает функция с названием “fn_generate_meta_description” из файла app/functions/fn.common.php ? или это файл какого-то модуля?
а еще вопрос по куску кода из файла app/functions/fn.categories.php:
// Generate meta description automatically
if (empty($category_data[‘meta_description’]) && defined(‘AUTO_META_DESCRIPTION’) && AREA != ‘A’) {
$category_data[‘meta_description’] = !empty($category_data[‘description’]) ? fn_generate_meta_description($category_data[‘description’]) : ‘’;
}
Что он делает?
Возможно я неправильно выразился и не ядро заполняет автоматом, но факт в том что если оставить поле meta description пустым в админ панели, на витрине оно пустым не будет, и как в шаблоне проверить заполнено ли это поле - я все еще не догадался.

Действительно, если в config.php определена константа AUTO_META_DESCRIPTION, то на карточке будет сгенерировано мета описание из полного описания товара и на категории - из описания категории

Все равно генерируется, даже после того как я закомментировал эту строчку в config.php :-/

Точно закомментировали? Не поменяли значение на false?

Сначала менял, потом закомментил, кеш сбрасывал - без изменений. :man_facepalming:

Нужно на месте смотреть, может модуль какой. При комментировании не должно работать