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

спасибо вам огромное, потихоньку вникаю с вашей помощью))

Здравствуйте!
Подскажите, пожалуйста, вы наверняка знаете))
Как можно так же динамически настроить 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']

1 лайк

С характеристиками посложнее

$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 группы характеристик, в которой находится характеристика брэнда

1 лайк

Здравствуйте!
Подскажите, пожалуйста, что делаю не так. (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’);, должен отобразиться на странице.