Porady do wtyczki "Charakterystyka na listach towarów"
Podstawowe style do schludnego projektowania cech
Często te podstawowe style są wystarczające. W razie potrzeby dodaj dodatkowe style, aby poprawić wygląd funkcji.
table.listfeatures td {
height: auto;
width: auto;
min-height: 0;
min-width: 0;
vertical-align: top;
text-align: left;
}
table.listfeatures td.name {
padding: 0 0.5em 0.5em 0;
font-weight: bold;
}
table.listfeatures td.value {
padding: 0 0 0.5em 0;
}
Dodawanie funkcji w trybie testowym
Kiedy po raz pierwszy dodajesz wywołanie wtyczki do szablonu projektu, zrób to w trybie testowym, aby nie przestraszyć odwiedzających witrynę podczas eksperymentów. Aby dodać wywołanie wtyczki w trybie testowym, zawiń je wewnątrz warunku {if}...{/if}, jak pokazano w przykładzie:
{if $wa->get('test') == 'listfeatures'}
{shopListfeaturesPlugin::display($p, $products)}
{/if}
Aby wyświetlić listę cech w trybie testowym, dodaj parametr ?test=listfeatures do adresu URL strony. Na przykład: https://mydomain.com/category/sales/?test=listfeatures
Po zakończeniu konfiguracji i testowania wtyczki usuń znaczniki {if}...{/if} i pozostaw tylko wywołanie wtyczki {shopListfeaturesPlugin::display($p, $products)}.
Umieszczanie wartości cech na stronie produktu
Aby to zrobić, dodaj wywołanie wtyczki do żądanej lokalizacji w pliku product.html, jak pokazano poniżej:
{shopListfeaturesPlugin::display($product, [$product])}
Z numerem zestawu funkcji utworzonym w ustawieniach wtyczki, ten fragment kodu będzie miał podobny wygląd:
{shopListfeaturesPlugin::display($product, [$product])}
Wyświetlanie różnych zestawów cech w różnych kategoriach produktów
1. Utwórz kilka różnych zestawów cech w ustawieniach wtyczki: "Wtyczki → Charakterystyka na listach towarów".
2. W sekcji "Towary → Kategorie" we właściwościach każdej kategorii produktów dodaj dowolny dodatkowy parametr z numerem żądanego zestawu cech, na przykład:
set_id=3
3. W edytorze projektu w sekcji "Witryna" otwórz plik category.html i znajdź w nim ciąg znaków
{include file='list-thumbs.html' sorting=!empty($category.params.enable_sorting)}
i zmodyfikuj go tak, jak pokazano poniżej:
{include file='list-thumbs.html' sorting=!empty($category.params.enable_sorting) listfeatures_set_id=$category.params.set_id|default:1}
Jeśli kategoria nie posiada opcji set_id, to w tej kategorii zostanie wyświetlony pierwszy zestaw cech.
4. W pliku, którego nazwa jest wymieniona w tej linijce (np. list-thumbs.html) umieść wywołanie wtyczki w następujący sposób:
{if isset($listfeatures_set_id)}
{shopListfeaturesPlugin::display($p, $products, $listfeatures_set_id)}
{/if}
Wyświetlaj wartości cech tylko wtedy, gdy element ma pusty krótki opis.
Zamiast dodawać standardowe wywołanie pluginu:
{shopListfeaturesPlugin::display($p, $products)}
zastąpić kod do wyświetlania krótkiego opisu
  <p itemprop="description" class="description">{strip_tags($p.summary)|truncate:100}</p>
z następującym fragmentem kodu:
 {if $p.summary}
  <p itemprop="description" class="description">{strip_tags($p.summary)|truncate:100}</p>
 {else}
  {shopListfeaturesPlugin::display($p, $products)}
 {/if}
Jak pokazać wartość jednej cechy oddzielnie od listy innych cech?
Na przykład, nazwa marki bezpośrednio pod nazwą produktu, a pozostałe cechy pod krótkim opisem.
1. zmień standardowy szablon w ustawieniach wtyczki:
{$special_feature = 'brand'}
<table class="features listfeatures{if $set.class_name|default:''} {$set.class_name}{/if}">
<tbody>
{foreach $features as $feature}
{if $feature.code == $special_feature}<!-- feature start -->{/if}
<tr{if $feature.class_names} class="{$feature.class_names}"{/if}>
<td class="name">{$feature.name}</td>
<td class="value">{if $feature.code == $special_feature}<!-- value start -->{/if}{$feature.values}{if $feature.code == $special_feature}<!-- value end -->{/if}</td>
</tr>
{if $feature.code == $special_feature}<!-- feature end -->{/if}
{/foreach}
</tbody>
</table>
2. W szablonie motywu projektowego dodaj linię powyżej miejsca, w którym wyświetlane są funkcje
{capture "listfeatures"}{shopListfeaturesPlugin::display($p, $products)}{/capture}
3. Aby pokazać wartość pojedynczej cechy, dodaj linię tam, gdzie jest to wymagane
{if preg_match('/<!-- value start -->(.+)<!-- value end -->/s', $smarty.capture.listfeatures, $m)}{$m[1]}{/if}
4. Aby wyświetlić inne charakterystyki, należy dodać wiersz tam, gdzie jest to wymagane
{$smarty.capture.listfeatures|regex_replace:'/<!-- feature start -->.+<!-- feature end -->/s':''}