Smarty - Выдернуть значние $match

nulledpapa

Постоялец
Регистрация
1 Фев 2016
Сообщения
147
Реакции
100
Добрый день друзья, помогите решить проблему кода Smarty

У меня в "Доп. характеристики"

------
есть значения вида CVS:
Цвет (Русский)

{Корпус Дуб Феррара / Фасад Слива Вайлис^vcw08sosc4.jpg^В наличии^33510,Корпус Дуб Феррара / Фасад Ясень глянец^w4gwgkcwcc.jpg^В наличии^30960}
{Венге Магия / Выбеленный дуб^nco77jeyis_big.jpg^В наличии^26740}

------
Как мне во фронтенде в шаблоне получить отдельно, чтобы я мог управлять выводом разбитым через спец знак "^":
match[0] = "Венге Магия / Выбеленный дуб";
match[1] = "nco77jeyis_big.jpg";
match[2] = "В наличии";
match[3] = "26740";


шаблон где получаю "product_info.html":

Код:
<div id="item_color_page">
{counter name='select_counter' start=0 skip=1 print=false assign='select_counter_var'}
{section name=i loop=$product_extra}
{if $product_extra[i].design eq 1 AND $product_extra[i].option_type != 0}
{section name=k loop=$product_extra[i].option_show_times}
{counter name=select_counter assign=_cnt}
<select id="imageSelector"  name='option_{$_cnt}' class="product_option">
{section name=j loop=$product_extra[i].values_to_select}
<option name="{$product_extra[i].values_to_select[j].option_value}" value='{$product_extra[i].values_to_select[j].variantID}' rel='{$product_extra[i].values_to_select[j].price_surplus}' {if $product_extra[i].values_to_select[j].variantID == $product_extra[i].variantID}selected="selected"{/if} itemprop="color" >
{$product_extra[i].values_to_select[j].option_value}
</option>
{/section}
</select>

<div id="imagePreview"></div>
{/section}
{/if}
{/section}
</div>


тоесть по сути вот это значение как то надо разбить в массиве: {$product_extra.values_to_select[j].option_value}
// у одного товара
1// Корпус Дуб Феррара / Фасад Слива Вайлис^vcw08sosc4.jpg^В наличии^33510
2// Корпус Дуб Феррара / Фасад Ясень глянец^w4gwgkcwcc.jpg^В наличии^30960


сейчас выводит код выше:
//первое значение
$product_extra.values_to_select[j].option_value = "Корпус Дуб Феррара / Фасад Слива Вайлис^vcw08sosc4.jpg^В наличии^33510";
//второе значение
$product_extra.values_to_select[j].option_value = "Корпус Дуб Феррара / Фасад Ясень глянец^w4gwgkcwcc.jpg^В наличии^30960";

match[0] = "Венге Магия / Выбеленный дуб";
match[1] = "nco77jeyis_big.jpg";
match[2] = "В наличии";
match[3] = "26740";



так не пошло (((
Код:
    {assign var="myArray" value=$product_extra[i].values_to_select[j].option_value|explode:"^"}
    {myArray[1]}


но как как, немогу понять прошу помощи!
 
Последнее редактирование:
По сути, сделать на нативном PHP легко:
PHP:
$string = 'Корпус Дуб Феррара / Фасад Слива Вайлис^vcw08sosc4.jpg^В наличии^33510';
$arr = explode('^',$string);
Ваша проблема, видимо, решается с помощью вызова функции explode в стиле смарти:
PHP:
{explode delimiter='^' string=$product_extra.values_to_select[j].option_value}
 
По сути, сделать на нативном PHP легко:
PHP:
$string = 'Корпус Дуб Феррара / Фасад Слива Вайлис^vcw08sosc4.jpg^В наличии^33510';
$arr = explode('^',$string);
Ваша проблема, видимо, решается с помощью вызова функции explode в стиле смарти:
PHP:
{explode delimiter='^' string=$product_extra.values_to_select[j].option_value}


не срабатывает(((( Пустота!

Код:
<div id="item_color_page">
{counter name='select_counter' start=0 skip=1 print=false assign='select_counter_var'}
{section name=i loop=$product_extra}
{if $product_extra[i].design eq 1 AND $product_extra[i].option_type != 0}
{section name=k loop=$product_extra[i].option_show_times}
{counter name=select_counter assign=_cnt}
<select name='option_{$_cnt}' class="product_option">
{section name=j loop=$product_extra[i].values_to_select}
<option value='{$product_extra[i].values_to_select[j].variantID}' rel='{$product_extra[i].values_to_select[j].price_surplus}' {if $product_extra[i].values_to_select[j].variantID == $product_extra[i].variantID}selected="selected"{/if} itemprop="color" >

{explode delimiter='^' string=$product_extra.values_to_select[j].option_value}

</option>
{/section}
</select>


{/section}
{/if}
{/section}
</div>
 
не срабатывает(((( Пустота!
Вот поэтому я ненавижу Смарти;)
Я думаю, что массив создается но не выводится.
Можно попробовать написать нормальный код на нормальном php, а потом проинклюдить в шаблон типа так:
PHP:
{include file=path_to_file}
И в инклюде создать переменную
PHP:
$arr_cat=explode('^',$product_extra.values_to_select[j].option_value);
Ну или где-то в апи сделать функцию, а потом уже вставлять её в смарти.
 
Последнее редактирование:
Попробуй так
PHP:
{assign var="myArray" value="^"|explode:$product_extra[i].values_to_select[j].option_value}
{myArray.[0]}
{myArray.[1]}
{myArray.[2]}
 
Вообще-то должен работать самый простой вариант:
PHP:
{$arr = "^"|explode:$product_extra.values_to_select[j].option_value}
{arr.[0]}
{arr.[1]}
{arr.[2]}
Если не работает, то возможно что версия Smarty очень древняя
 
Какая версия смарти кстати ? там можно вставить {php} как вариант и на пыхе все сделать.
 
Назад
Сверху