Страница 1 из 1

Расширение возможностей SEO фильтра

Добавлено: 23.11.2019, 13:27
ShalmievCom
Добрый день! Столкнулся с небольшой проблемой. Нужно вывести артикул в шаблонном Title и Description. К сожалению, в системе зашиты по умолчанию ограниченное количество вставок.
{$category} - Название категории
{$category_h1} - Н1 заголовок категории
{$brand} - Название бренда
{$product} - Название товара
{$price} - Цена товара
{$sitename} - Название сайта

Хотелось бы видеть доступное свойство {$артикул_товара}, {$старая_цена_товара}. Некоторые товары ищут по артикулам напрямую, такчто их наличие в снипите важно.

За 5 минут у меня нашлось решение, но оно немного "топорное". Вставить таким образом свойство товара я смог в конец и в начало Title / Description. Возможно, кому-то пригодится. Добавить в любое место внтури тега <decription> или <Title>

Код: Выделить всё

{if $product->variant->sku|escape}{"Артикул: "}{$product->variant->sku|escape}. {/if}


P.S Вопрос к знающим движок Okay. Корректно ли выводить в шаблоне таким, предложенным мной топорным образом свойства? Я их не только в шаблоне странице Meta тегов использую, но и далее по коду. Не грузит ли это сервер обращением к БД? =)

Добавлено: 24.11.2019, 10:22
OkayCMS
Хорошая идея, в новой версии включим по умолчанию.
Вам сейчас в какую версию нужно добавить эти шорткоды?

Добавлено: 24.11.2019, 16:48
ShalmievCom
OkayCMS писал(а):Хорошая идея, в новой версии включим по умолчанию.
Вам сейчас в какую версию нужно добавить эти шорткоды?

Использую версию 2.3.4. В целом, если это будет в следующем релизе версии 3.*.* - буду доволен =) А что насчёт "правильности" написания кода в моём примере?

Добавлено: 25.11.2019, 08:47
zyxer
Идея имеет право на жизнь и систему не "грузит")) но более правильное решение это добавить такие строки http://prntscr.com/q1n806 в view/ProductView.php чтобы получилось так:

Код: Выделить всё

$parts = array(
    '{$brand}'    => ($this->design->get_var('brand') ? $this->design->get_var('brand')->name : ''),
    '{$product}'  => ($product->name ? $product->name : ''),
    '{$price}'    => ($product->variant->price != null ? $this->money->convert($product->variant->price, $this->currency->id, false).' '.$this->currency->sign : ''),
    '{$sku}'       => ($product->variant->sku ? $product->variant->sku : ''),
    '{$compare_price}'    => ($product->variant->compare_price != null ? $this->money->convert($product->variant->compare_price, $this->currency->id, false).' '.$this->currency->sign : ''),
    '{$sitename}' => ($this->settings->site_name ? $this->settings->site_name : '')
);


Для большей красоты, стоит еще добавить эти переменные в backend/design/html/seo_filter_patterns_ajax.tpl (на функциональность не влияют, просто для удобства)

Добавлено: 25.11.2019, 11:27
ShalmievCom
zyxer писал(а):Идея имеет право на жизнь и систему не "грузит")) но более правильное решение это добавить такие строки http://prntscr.com/q1n806 в view/ProductView.php чтобы получилось так:

Код: Выделить всё

$parts = array(
    '{$brand}'    => ($this->design->get_var('brand') ? $this->design->get_var('brand')->name : ''),
    '{$product}'  => ($product->name ? $product->name : ''),
    '{$price}'    => ($product->variant->price != null ? $this->money->convert($product->variant->price, $this->currency->id, false).' '.$this->currency->sign : ''),
    '{$sku}'       => ($product->variant->sku ? $product->variant->sku : ''),
    '{$compare_price}'    => ($product->variant->compare_price != null ? $this->money->convert($product->variant->compare_price, $this->currency->id, false).' '.$this->currency->sign : ''),
    '{$sitename}' => ($this->settings->site_name ? $this->settings->site_name : '')
);


Для большей красоты, стоит еще добавить эти переменные в backend/design/html/seo_filter_patterns_ajax.tpl (на функциональность не влияют, просто для удобства)

О, вот это круто! Спасибо =)