База знаний
Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.
Полезная информация

Инструкция по интеграции плагина «SEO-фильтр» в тему дизайна

Поддержка Bodysite
Поддержка Bodysite
28 апреля 2019 16:12
+1

Плагин интегрирован в темы дизайна «MegaShop 3.0», «Mobisite 3.0», «MegaShop 2.0». Размещение кода из инструкции не требуется.

Во многих других темах дизайна плагин тоже интегрирован, подробнее об этом уточните у разработчика. 

Важно! Ввиду индивидуальности и особенностей каждого Frontend-a в отдельности, мы не осуществляем интеграцию плагина в тему дизайна. Воспользуйтесь данной инструкцией или обратитесь к разработчику сайта/темы дизайна.

Для корректной работы основного функционала плагина SEO-фильтр обязательно соблюдение и настройка п.1,2,3. Остальные пункты настраиваются при необходимости.

1. Установка заголовков и описаний

Убедитесь, что название категории расположено в блоке с классом 'category-name', описание - в блоке с классом 'category-desc', дополнительное описание - в блоке с классом 'filter-additional-desc'! Если этих классов нет - обязательно добавьте их, иначе заголовок и описание не будут меняться динамически.

Как правило изменения вносятся в шаблоне category.html если указанный шаблон отсутствует в Вашей теме дизайна обратитесь к разработчику сайта или темы дизайна.

1) Вывод заголовка category-name, например (приводимая конструкция может отличаться):

<div class="c-block__header">
        <h1 class="c-header c-header_h1 category-name">{$category.name}</h1>
</div>

2) Вывод описания category-desc, например (приводимая конструкция может отличаться):

<div class="c-content-decorator category-desc">
    {if $category.description}
                   {call wrap_tables content=$category.description}
    {/if}
</div>

3) Вывод дополнительного описания filter-additional-desc, например (приводимая конструкция может отличаться): 

<div class="c-content-decorator filter-additional-desc">
    {if $category.additional_description|default:''}
                   {call wrap_tables content=$category.additional_description}
    {/if}
</div>

Если дополнительное описание не отображается - проверьте, установлен ли плагин "Дополнительное описание для категорий" и выключите его.

2. Замена ссылок постраничной навигации

Для замены ссылок в постраничной навигации, необходимо внести изменения в тему дизайна.

Откройте файл list-thumbs.html (в вашей теме дизайна это может быть другой файл) найдите и замените код:

{wa_pagination total=$pages_count attrs=['class' => "menu-h"]}

на:

{capture assign=pagination}
    {wa_pagination total=$pages_count attrs=['class' => "menu-h"]}
{/capture}
{shopSeofilterViewHelper::paginationDecorate($pagination)}

3. Замена ссылок в сортировке

Для замены ссылок в сортировке, необходимо внести изменения в тему дизайна.

Откройте файл list-thumbs.html (в вашей теме дизайна это может быть другой файл) найдите и замените код:

{$wa->shop->sortUrl($sort, $name, $active_sort)}

на:

{shopSeofilterViewHelper::sortUrl($sort, $name, $active_sort)}

4. Подстановка ссылок в фильтре

Для подстановки ссылок на фильтры необходимо внести изменения в тему дизайна.

Откройте файл category.html (возможно в других файлах в зависимости от темы дизайна)

1. Найдите код:

{foreach $filter.values as $v_id => $v}

и чуть ниже замените код:

{$v}

на:

{$filter_url = shopSeofilterViewHelper::getFilterUrl($filter.id, $v_id, $filter.code)}
   {if $filter_url}
       <a class="filter-link" href="{$filter_url}">{$v}</a>
   {else}
{$v}
{/if}

2. Замените код:

<label><input type="radio" name="{$filter.code}"{if $wa->get($filter.code)} checked{/if} value="1"> [`Yes`]</label>

на:

<label>
  <input type="radio" name="{$filter.code}"{if $wa->get($filter.code)} checked{/if} value="1">
  {$radio_filter_url = shopSeofilterViewHelper::getFilterUrl($filter.id, "1", $filter.code)}
  {if $radio_filter_url}
    <a class="filter-link" href="{$radio_filter_url}">[`Yes`]</a>
  {else}
 [`Yes`]
 {/if}
</label>

3. Замените код:

<label><input type="radio" name="{$filter.code}"{if $wa->get($filter.code) === '0'} checked{/if} value="0"> [`No`]</label>

На:

<label>
  <input type="radio" name="{$filter.code}"{if $wa->get($filter.code) === '0'} checked{/if} value="0">
  {$radio_filter_url = shopSeofilterViewHelper::getFilterUrl($filter.id, "0", $filter.code)}
  {if $radio_filter_url}
     <a class="filter-link" href="{$radio_filter_url}">[`No`]</a>
  {else}
  [`No`]
  {/if}
</label>

5. Перелинковка характеристик в карточке товара

В шаблоне product.html (в вашей теме дизайна это может быть другой файл) найдите вывод характеристик товара такого содержимого:

{foreach $product.features as $f_code => $f_value}
    <tr{if $features[$f_code].type == 'divider'} class="divider"{/if}>
        <td class="name">
            {$features[$f_code].name|escape}
        </td>
        <td class="value" itemprop="{$f_code|escape}">
            {if is_array($f_value)}
                {if $features[$f_code].type == 'color'}
                    {implode('
 ', $f_value)}
                {else}
                    {implode(', ', $f_value)}
                {/if}
            {else}
                {$f_value}
            {/if}
        </td>
    </tr>
{/foreach}

В котором нужно заменить:

 $product.features

на:

shopSeofilterViewHelper::wrapFeatureValues($product.features)

6. Подстановка SEO-названия в "хлебную крошку".

Для того, чтобы в хлебных крошках появлялось указание SEO-названия фильтра, нужно использовать специальный хелпер (появился с версии 2.40.0):

{shopSeofilterHelper::getSeoName()}

Пример использования в теме дизайна Дефолт 3.0:

В шаблоне main.html нужно добавить хелпер {shopSeofilterHelper::getSeoName()} в блок breadcrumbs после {/foreach}, чтобы получилось так:

{if !empty($breadcrumbs)}
        <nav class="breadcrumbs" itemprop="breadcrumb">
            {if !$wa->globals('isMyAccount')}
                <a href="{$wa_app_url}">{$wa->shop->settings('name')}</a>  <span class="rarr">&rarr;</span>
            {else}
                {* within My Account we exclude first node from navigation because links are on the page already *}
                {$breadcrumbs[0] = null}
            {/if}
            {foreach $breadcrumbs as $breadcrumb}
                {if $breadcrumb}
                    <a href="{$breadcrumb.url}">{$breadcrumb.name|escape}</a> <span class="rarr">&rarr;</span>
                {/if}
            {/foreach}
           {shopSeofilterHelper::getSeoName()}
        </nav>
    {/if}



* - если указанные шаблоны отсутствуют в Вашей теме дизайна обратитесь к разработчику сайта или темы дизайна.

7. Темы, в которые плагин интегрирован разработчиками

Плагин "SEO-фильтр" один из самых популярных плагинов для Webasyst, и многие разработчики тем дизайна интегрируют его самостоятельно, чтобы этого не пришлось делать пользователю. 

В описаниях этих тем мы нашли информацию об интеграции плагина:

Возможно и некоторые другие, уточните у разработчика вашей темы.