спасибо вам огромное, потихоньку вникаю с вашей помощью))
Здравствуйте!
Подскажите, пожалуйста, вы наверняка знаете))
Как можно так же динамически настроить meta description?
Чтобы в него подтягивался title и цена.
И где вообще находится кусок кода, отвечающий за его вывод.
Все обшарила, никак не могу разобраться.
Можно использовать пре хук шаблона
{hook name="index:meta_description"}
в пре хуке проверять, определена ли смарти переменная $product, и если определена, добаввить к переменной $meta_description свои данные, либо просто переопределить $meta_description
В модуле Расширенные мета-теги и плейсхолдеры есть возможность всего этого.
Также в .post контроллере и делайте, как в примерах выше, добавив
Registry::get('view')->assign('meta_description', 'ваши данные');
сделала так, не работает, подскажите, где ошибка?
"<?php
use Tygh\Registry;
if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }
if ($mode == 'view' && !empty($_REQUEST['product_id'])) {
$product = Registry::get('view')->getTemplateVars('product');
if(empty($product['meta_description'])){
$meta_description = $product['product'];
Registry::get('view')->assign('meta_description', "Купить " .strtolower($meta_description) ." за " .$price ." р. " ."от производителя" .$brand ."на маркетплейсе Wismo. Доставляем по всей России!");
}
}
Вроде все ок. Первым делом посмотрите, видит ля ядро ваш файл
В любом месте добавьте
fn_print_r('test');
test должен отобразиться в браузере
test не отображается нигде, хотя файл находится в одной папке с теми, которые ядро видит
Покажите полный путь до файла и его имя. Также права на файл проверьте и кэш почистите
/app/addons/my_changes/controllers/frontend/description.post.php
права 0644
кэш почистила, результата нет
Замените на products.post.php
спасибо, работает!
только цена и бренд не отображаются, возможно переменные неверно указаны?
замените
$price
на
$product['price']
С характеристиками посложнее
$features = fn_get_product_features_list(['product_id' => $$product['product_id'], 'A');
if (array_key_exists(FEATURE_BRAND_ID, $features)) {
$brand = $features[FEATURE_BRAND_ID]['variant']);
}
FEATURE_BRAND_ID - id характеристики брэнда
Это навскидку, из своего кода вырвал, но возможно проще можно, распечатайте
fn_print_r($product");
и посмотрите путь к бренду в массиве.
В $product[‘product_features’] или $product[‘header_features’] должен быть бренд
точно. в $product[‘product_features’] с иерархией групп характеристик, а здесь только id нужной характеристики надо знать
$products['header_features'][FEATURE_BRAND_ID]['variant']
где FEATURE_BRAND_ID - id характеристики брэнда
PS но это как я понимаю, если характеристика в заголовке выводится.
Если нет, то только
$product[‘product_features’][GROUP_BRAND_ID]['subfeatures'][FEATURE_BRAND_ID]['variant']
где GROUP_BRAND_ID - id группы характеристик, в которой находится характеристика брэнда
Здравствуйте!
Подскажите, пожалуйста, что делаю не так. (title и категории встали нормально).
meta description ни в какую не хочет.
’’’<?php
use Tygh\Registry;
if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }
if ($mode == ‘view’ && !empty($_REQUEST[‘product_id’])) {
$product = Registry::get(‘view’)->getTemplateVars(‘product’);
if(empty($product[‘meta_description’])){
$meta_description = $product[‘product’];
Registry::get(‘view’)->assign(‘meta_description’, . " Доставляем по всей России!");
}
}
’’’
Здравствуйте, попробуйте убрать точку перед " Доставляем по всей России!"
Добрый день.
Не работает (cache чистил).
такой код?
“<?php
use Tygh\Registry;
if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }
if ($mode == ‘view’ && !empty($_REQUEST[‘product_id’])) {
$product = Registry::get(‘view’)->getTemplateVars(‘product’);
if(empty($product[‘meta_description’])){
$meta_description = $product[‘product’];
Registry::get(‘view’)->assign(‘meta_description’, " Доставляем по всей России!”);
}
}
пишете в my_changes /…/ products.post.php?
Из банального - проверьте, что модуль “Мои изменения” включен. Что пишете код в верной папке.
Если все ок с этим, то убедитесь, что система видит файл, в любом месте кода добавьте fn_print_r(‘test’);, должен отобразиться на странице.