Описание фильтров

Всем доброго времени суток.

Странно, что до сих пор никто, похоже, этим не интересовался, но всё же:
Как добавить описание к фильтрам? В идеале, чтобы описание фильтра перетекало из описания характеристики, по которой установлен этот фильтр.
Примерно так, как это реализовано на этом сайте (не у всех, но у некоторых фильтров есть описание).
Это важно, потому что если предположить, что пользователь заходит на сайт, заходит в нужную категорию и пытается выбрать товар по фильтрам. И если он видит фильтры, которые ему не понятны, то чтобы как-то понять, что он значит, то он должен сначала выбрать что-то в этом фильтре, зайти в отфильтрованный товар и только там, если повезёт, он сможет посмотреть описание характеристики, по которой он отфильтровал товар.
До этого момента на этапе выбора при нахождении на странице категории он не видит описание категории/фильтра, а это может быть важно при наличии каких-то нетривиальных технических характеристик.

Как можно доработать этот недостаток?

3 лайка

Задача несложная. Но из коробки не сделать, к сожалению

Было бы супер наличие такого описания.
@ecomlabs, а сколько стоит? Может в этой теме найдется ряд желающих и все скинутся?

Я бы оплатил доработку.

Пока, к сожалению, все заняты. Попробуйте обратиться к другим разработчикам, много не возьмут

На коленке вот такой вариант набросал:
image

Такой результат должен быть?

похоже. как такое настроить?

Настроить никак, только кодить

так какой код и куда вставить? я так понял, что у вас уже есть решение. или вы на оплату намекаете?))

не, не намекаю, всё довольно просто :rofl:
позже чуток покажу как сделать

2 лайка

ну…как и обещал, сейчас опубликую исходники

app/addons/my_changes/func.php (надо создать если нету)

<?php
function fn_my_changes_get_filters_products_count_before_select_filters(&$sf_fields, $sf_join, $condition, $sf_sorting, $params)
{
    $sf_fields .= ",?:product_features_descriptions.full_description";
}

app/addons/my_changes/init.php (надо создать если нету)

<?php
fn_register_hooks(
    'get_filters_products_count_before_select_filters'
);

design/themes/responsive/templates/addons/my_changes/hooks/blocks/product_filters_variants.override.tpl (надо создать)

<!--override with my_changes-->
{assign var="filter_uid" value="`$block.block_id`_`$filter.filter_id`"}
{assign var="cookie_name_show_filter" value="content_`$filter_uid`"}
{if $filter.display == "N"}
    {* default behaviour of cm-combination *}
    {assign var="collapse" value=true}
    {if $smarty.cookies.$cookie_name_show_filter}
        {assign var="collapse" value=false}
    {/if}
{else}
    {* reverse behaviour of cm-combination *}
    {assign var="collapse" value=false}
    {if $smarty.cookies.$cookie_name_show_filter}
        {assign var="collapse" value=true}
    {/if}
{/if}

{$reset_url = ""}
{if $filter.selected_variants || $filter.selected_range}
    {$reset_url = $filter_base_url}
    {$fh = $smarty.request.features_hash|fn_delete_filter_from_hash:$filter.filter_id}
    {if $fh}
        {$reset_url = $filter_base_url|fn_link_attach:"features_hash=$fh"}
    {/if}
{/if}

    <div class="ty-product-filters__block">
        <div id="sw_content_{$filter_uid}" class="ty-product-filters__switch cm-combination-filter_{$filter_uid}{if !$collapse} open{/if} cm-save-state {if $filter.display == "Y"}cm-ss-reverse{/if}">
            <span class="ty-product-filters__title">{$filter.filter}{if $filter.selected_variants} ({$filter.selected_variants|sizeof}){/if}{if $reset_url}<a class="cm-ajax cm-ajax-full-render cm-history" href="{$reset_url|fn_url}" data-ca-event="ce.filtersinit" data-ca-target-id="{$ajax_div_ids}" data-ca-scroll=".ty-mainbox-title"><i class="ty-icon-cancel-circle"></i></a>{/if}</span>
            {if $filter.full_description}<span class="cm-tooltip" title="{$filter.full_description}"><i class="ty-icon-help-circle"></i></span>{/if}
            <i class="ty-product-filters__switch-down ty-icon-down-open"></i>
            <i class="ty-product-filters__switch-right ty-icon-up-open"></i>
        </div>
        {hook name="blocks:product_filters_variants_element"}
        {if $filter.slider}
            {if $filter.feature_type == "ProductFeatures::DATE"|enum}
                {include file="blocks/product_filters/components/product_filter_datepicker.tpl" filter_uid=$filter_uid filter=$filter}
            {else}
                {include file="blocks/product_filters/components/product_filter_slider.tpl" filter_uid=$filter_uid filter=$filter}
            {/if}
        {else}
            {include file="blocks/product_filters/components/product_filter_variants.tpl" filter_uid=$filter_uid filter=$filter collapse=$collapse}
        {/if}
        {/hook}
    </div>

Шаблон с 493, на 410 может отличатся, так что осторожно с оверрайдом, сначала проверьте.
А если не хочется оверрайд делать, то вот эта строка и отвечает за вывод

{if $filter.full_description}<span class="cm-tooltip" title="{$filter.full_description}"><i class="ty-icon-help-circle"></i></span>{/if}
5 лайков

это альтернативный вариант? а куда этот код вставлять?

Этот код можно использовать если подключаетесь в пост или пре через хук.
Либо же если коцаете исходник(не надо этого делать).
В целом вариант, мной описанный изначально, вам подойдет больше всего, если вы не понимаете что делать.
В случае поломки можно просто отключить модуль и всё

1 лайк

Сделал всё, как Вы написали, что-то без изменений. Надо как-то включить этот функционал ещё? У меня 4.9.3

  1. Должен быть включен модуль “Мои изменения”
  2. Надо сбросить кеш
  3. В характеристики, с которой сделан фильтр, должно быть описание

Ну и внимательно проверьте пути и названия файлов, там ли создали

1 лайк


что-то поломалась вёртска в админке и на сайте. и описаний у фильтров всё равно нет.
и сообщение наверху появилось какое-то

в общем пришлось удалить эти файлы, чтобы в норму вернулось опять всё. Что я делал не так?

Смешно получилось)))))
Я думал вы хоть чуток разбираетесь.
Это случилось из-за того, что в файлах, которые вы создали(.php), отсутствовал открывающий тег.
Я код копировал из модуля, в котором есть и другой функционал, вот и не скопировал открывающий тег.
Поправил исходное сообщение, попробуйте еще раз)

1 лайк

Спасибо, заработало. Если не трудно, пару нюансов:

  1. При просмотре с мобильного телефона не очень понятно, как закрыть эту подсказку после активации. Приходится какой-нибудь вариант фильтра активировать, не очень удобно. Просто при повторном нажатии на подсказку не исчезает, как это обычно бывает.
  2. Объёмные описания иногда вылезают за экран и их никак оттуда не достать. Пример:
    на этой странице описание фильтра “Режим работы”.
  3. Можно как-то увеличить поле описания в ширину, чтобы не так сильно растягивалось по вертикали?