Здравствуйте!
Считаю, не один я столкнулся с проблемой скрытия заголовков групп, созданных характеристикой с типом "Разделитель", в которых не заполнены по каким-то причинам характеристики. В этом случае, в шаблоне будут выводиться один или несколько заголовков без характеристик, входящих в эти группы. Это не нормально. Правильно, если есть хоть одна характеристика на вывод, значит выводим и заголовок, нет - значит не выводим и заголовок группы.
как временное решение (может и не единственное), но пока что реализованное мной на сайте, является следующее:
в шаблоне product.html находим код цикла для вывода характеристик, в дефолтной теме он такой:
{foreach $product.features as $f_code => $f_value}
........ здесь ваш код вывода характеристик
{/foreach}
перед ним и внутри его размещаем код, выделенный жирным цветом
{foreach $product.features as $f_code => $f_value}
{if $divider == 1 && $features[$f_code].type == 'divider'}
{$hide_caption[] = $code}
{/if}
{if $features[$f_code].type == 'divider'}
{$divider = 1}
{$code = $f_code}
{else}
{$divider = 0}
{/if}
{/foreach}
{foreach $product.features as $f_code => $f_value}
{if !in_array($f_code, $hide_caption)}
........ здесь ваш код вывода характеристик
{/if}
{/foreach}
т.е. первый добавленный мной блок кода перебирает заголовки, в которых нет заполненных характеристик, и создает из них массив, который используется нами в цикле foreach для скрытия их на сайте.
По аналогии делается все и в шаблоне compare.html
Возможно, код не совершенен, поэтому буду рад, если кто поправит меня, другим тоже будет полезна информация.
Удачи Вам в программировании!
1 комментарий
Не получается. Помогите, пожалуйста, куда вставлять код?
У меня код следующий:
{/foreach}
</tr>
</thead>
<tr>
<th>[`Price`]</th>
{foreach $products as $p}
<td width="{$td_width}%">
<span class="price nowrap">{shop_currency_html($p.price)}</span>
</td>
{/foreach}
</tr>
{foreach $features as $f_id=>$f}
{if strpos($f_id, '_') !== 0}
<tr{if $f.same} class="same"{/if}>
<th>{$f.name}</th>
{foreach $products as $p}
<td>
{if isset($p.features[$f_id])}
{if is_array($p.features[$f_id])}
{implode('<br> ', $p.features[$f_id])}
{else}
{$p.features[$f_id]}
{/if}
{else}
<span class="gray">—</span>
{/if}
</td>
{/foreach}
</tr>
{/if}
{/foreach}
</table>