Скрытие заголовка группы характеристик (тип "Разделитель") в шаблоне при отсутствии последних в данной группе

6

Здравствуйте!

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

как временное решение (может и не единственное), но пока что реализованное мной на сайте, является следующее:

в шаблоне 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 комментарий

  • +2
    ivan ivanov ivan ivanov 16 мая 2016 10:59 #

    Не получается. Помогите, пожалуйста, куда вставлять код?

    У меня код следующий:

    {/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>

    Добавление новых комментариев к этой теме отключено.