Кликабельные ссылки в характеристиках

Всем доброго времени суток.
Проблема: по каждому товару в характеристиках созданы группа характеристик “Ссылки на документацию”, где некие поля со ссылками (на инструкции и т.п.).
Пример по ссылке:
ссылка товара:

Как сделать их кликабельными, чтобы посетителю не приходилось её вручную копировать и вставлять у себя в браузере? Пытался эти характеристики “обёртывать” в html теги, чтобы воспринимались, как код, но не помогает, просто выводится текст кода.

Можно сделать отдельную закладку (Например, “Документация”), где будет блок html кода и там уже кликабельная ссылка (реализовано всё в том же товаре по ссылке:
ссылка товара)., но здесь проблема в том, что для каждого товара нужно вручную прописывать такой блок и вручную вставлять ссылку, а у меня несколько тысяч товаров и есть база csv с уникальными ссылками для каждого товара и в идеале нужно бы добавить такую возможность в функцию импорта в админке, но мне ответили, что пока нет этого функционала.

Как решить задачу? Неужели никто не загружает ссылки для товаров?

1 лайк

design/themes/ТЕМА/templates/views/products/components/product_features.tpl

попробуйте тут поменять

{$feature.value|default:"-"}

на

{if $feature.value|strpos:'http' !== false}<a href="{$feature.value}" target="_blank">Ссылка</a>{else}{$feature.value|default:"-"}{/if}

Затем почистить кэш

(!) Не тестировано

2 лайка

у меня тема Unitheme, там по адресу
abt__unitheme / templates / views / products / components /
есть только
product_features_short_list.tpl , product_features.tpl нет.

в product_features_short_list.tpl такой код:

{assign var=“image_size” value=$image_size|default:80}
{function name=“feature_value”}
{strip}
{if $feature.features_hash && $feature.feature_type == “ProductFeatures::EXTENDED”|enum}
<a href="{“categories.view?category_id=$product.main_category&features_hash=$feature.features_hash”|fn_url}">
{/if}
{if $feature.prefix}{$feature.prefix}{/if}
{if $feature.feature_type == “ProductFeatures::DATE”|enum}

{$feature.description nofilter}:{$feature.value_int|date_format:"$settings.Appearance.date_format"}{if $feature.suffix}{$feature.suffix}{/if}

{elseif $feature.feature_type == “ProductFeatures::MULTIPLE_CHECKBOX”|enum}

{foreach from=$feature.variants item=“fvariant” name=“ffev”}
{if $smarty.foreach.ffev.first}{$feature.description nofilter}:{/if}{$fvariant.variant|default:$fvariant.value}{if !$smarty.foreach.ffev.last}, {/if}
{/foreach}

{elseif $feature.feature_type == “ProductFeatures::TEXT_SELECTBOX”|enum || $feature.feature_type == “ProductFeatures::NUMBER_SELECTBOX”|enum || $feature.feature_type == “ProductFeatures::EXTENDED”|enum}
{$feature.description nofilter}:{$feature.variant|default:$feature.value}{if $feature.suffix}{$feature.suffix}{/if}

{elseif $feature.feature_type == “ProductFeatures::SINGLE_CHECKBOX”|enum}
{$feature.description}:

{elseif $feature.feature_type == “ProductFeatures::NUMBER_FIELD”|enum}
{$feature.description}:{$feature.value_int|floatval}{if $feature.suffix}{$feature.suffix}{/if}

{else}
{$feature.description}:{$feature.value}{if $feature.suffix}{$feature.suffix}{/if}

{/if}
{if $feature.feature_type == “ProductFeatures::EXTENDED”|enum && $feature.features_hash}

{/if}
{/strip}
{/function}

{if $features}
{strip}
{if !$no_container}

{/if}
{foreach from=$features name=features_list item=feature}
{if $feature_image && $feature.variants[$feature.variant_id].image_pairs}
{assign var=“obj_id” value=$feature.variant_id}
<a href="{“categories.view?category_id=$product.main_category&features_hash=$feature.features_hash”|fn_url}">
{include file=“common/image.tpl” image_width=$image_size images=$feature.variants[$feature.variant_id].image_pairs no_ids=true}

{else}
{feature_value feature=$feature}{if !$smarty.foreach.features_list.last}{/if}
{/if}
{/foreach}
{if !$no_container}
{/if}
{/strip}
{/if}

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

Если нужного файла нет, ищите его в теме Responsive. Тема Unitheme является дочерней от Responsive:

Дочерние темы могут использовать шаблоны от родительской темы.

1 лайк

Заработало, спасибо!

Только можно ещё как-то сделать, чтобы ссылка называлась не просто “Ссылка”, а получалась комбинацией “Название характеристики” и “Product name”.
Т.е., для этого товара например, чтобы ссылки назывались:
“CAD модели DSNU-8-10-P-A”
“Документация DSNU-8-10-P-A”
“Запасные части DSNU-8-10-P-A”

Было бы идеально.

Попробуйте

{if $feature.value|strpos:'http' !== false}<a href="{$feature.value}" target="_blank">{$feature.description nofilter} {$product.product nofilter}</a>{else}{$feature.value|default:"-"}{/if}

3 лайка

Шикарно, спасибо вам!

1 лайк

Рад был помочь!

1 лайк

Установил пару модулей, теперь кликабельные ссылки опять пропали, а в шаблоне product_features.tpl не могу теперь найти этот текст:
{$feature.value|default:"-"}

Не подскажите?

Похоже, что модуль какой-то перезаписывает шаблон. Отключите модули по одному и определите, кто перезаписывает. Нужно будет внести такие же изменения в файл модуля

1 лайк

Нашёл модуль, который это отключает: AB: SEO страницы для фильтров

Не подскажете, как сделать, чтобы и модуль был включен, и ссылки остались кликабельные?

Нашёл фрагмент
{$feature.value|default:"-"}

только в файлах:
responsive / templates / addons / ab__seo_filters / hooks / product_features /ab__sf_feature.override.tpl
responsive / templates / addons / ab__seo_filters / overrides / views / products / components / product_features.tpl

Заменил его на фрагмент:
{if $feature.value|strpos:'http' !== false}<a href="{$feature.value}" target="_blank">{$feature.description nofilter} {$product.product nofilter}</a>{else}{$feature.value|default:"-"}{/if}

но не помогает

Кэш не забыли удалить?

1 лайк

Действительно, видимо забыл. Почистил, заработало. Спасибо!

1 лайк

Ничего не понимаю, простите :frowning:

Изменил:

  • design/themes/ТЕМА/templates/views/products/components/product_features.tpl
  • responsive / templates / addons / ab__seo_filters / hooks / product_features /ab__sf_feature.override.tpl
  • responsive / templates / addons / ab__seo_filters / overrides / views / products / components / product_features.tpl

заменив

{$feature.value|default:"-"}

на

{if $feature.value|strpos:'http' !== false}<a href="{$feature.value}" target="_blank">{$feature.description nofilter} {$product.product nofilter}</a>{else}{$feature.value|default:"-"}{/if}

Почистил кеш и удалив папку, и через админку.

Не работает, выводит тупо текст:

Есть предложения? :roll_eyes:

Выводит на странице товара блок с характеристиками вот эта часть файла responsive / templates / addons / ab__seo_filters / overrides / views / products / components / product_features.tpl:

 {elseif in_array($feature.feature_type, ["ProductFeatures::TEXT_SELECTBOX"|enum, "ProductFeatures::EXTENDED"|enum, "ProductFeatures::NUMBER_SELECTBOX"|enum])}
  {foreach from=$feature.variants item="var"}
  {if $var.selected}{$var.variant}{/if}<p>Test 29</p>
  {/foreach}
  {elseif $feature.feature_type == "ProductFeatures::NUMBER_FIELD"|enum}
  {$feature.value_int|floatval|default:"-"} 
  <p>Test 30</p>
  {else}
  <p>Test 32</p>
  {if $feature.value|strpos:'http' !== false}<a href="{$feature.value}" target="_blank">{$feature.description nofilter} {$product.product nofilter}</a>{else}{$feature.value|default:"-"}{/if}
  {/if}
  {if $feature.suffix && !$hide_affix}<span class="ty-product-feature__suffix">{$feature.suffix}</span>{/if}

А именно, строка, где я вставил

Test 29

Такие дела

Тогда замените

{if $var.selected}{$var.variant}{/if}

на

{if $var.selected}{if $var.variant|strpos:'http' !== false}<a href="{$var.variant}" target="_blank">{$var.variant}</a>{else}{$var.variant|default:"-"}{/if}{/if}

1 лайк

Благодарю, но мне кажется так немного лучше:

{if $var.selected}{if $var.variant|strpos:'http' !== false}<a href="{$var.variant}" target="_blank">Скачать сертификат/декларацию для модели «{$product.product nofilter}» (откроется в новом окне)</a>{else}{$var.variant|default:"-"}{/if}{/if}

:slightly_smiling_face:

1 лайк

@ecomlabs
А не подскажите, почему с какими-то характеристиками работает, а с какими-то нет?


Это может быть потому, что хар-ки “Документация”, “Documentation” имеют “Цель” “Дополнительная информация”, а “Руководство по эксплуатации” имеет “Цель” “Поиск товаров через фильтры”?
Просто в этой характеристике может быть несколько файлов, поэтому я такой тип выставил, а ссылка не кликабельная.

Странно, по целям не должно быть деления. Надо на месте смотреть