Условие на Fenom
Всем здравствуйте, подскажите пожалуйста, как возможно реализовать такое условие на fenom:
Есть опция товара Статус производителя и 2 значения Оригинал/Неоригинал
В шаблоне необходимо выводить, если значение Оригинал, то выводим изображение бренда, а в title подставляем titile=«Оригинал», если Неоригинал, то выводим картинку зачеркнутого бренда.
Сейчас для этого используется опция Производитель товара и выглядит это так, все работает отлично: disk.yandex.ru/i/3qxRRGR4goh8gA
И выводится в шаблоне так:
Есть опция товара Статус производителя и 2 значения Оригинал/Неоригинал
В шаблоне необходимо выводить, если значение Оригинал, то выводим изображение бренда, а в title подставляем titile=«Оригинал», если Неоригинал, то выводим картинку зачеркнутого бренда.
Сейчас для этого используется опция Производитель товара и выглядит это так, все работает отлично: disk.yandex.ru/i/3qxRRGR4goh8gA
И выводится в шаблоне так:
[[+{$_pls['vendor.logo']}:isnot=`0`:then=`<div class="vendor-logo">
<img src="{$_pls['vendor.logo']}" title="[[+vendor.name]]" class="img-responsive" data-toggle="tooltip"/>
</div>`:else=``]]
Но все же хотелось бы эту дефолтную опцию использовать по её прямому назначению, а как реализовать данный функционал не приложу ума… Додумался только так пока. Комментарии: 35
А Вы пробовали прикладывать ум не к гаданию, а к документации?
Дак это понятно, так у меня к примеру наличие выводится:
Это можно сделать через MIGX, но использовать TV нет желания, по этому и вопрос, как это сделать средствами minishop2 м возможно ли?
{if $available==1?}
<div class="stock"><span></span> <span class="status-stock">В наличии</span></div>
{/if}
{if $available==2?}
<div class="stock"><span></span> <span class="status-stock">Нет в наличии</span></div>
{/if}
{if $available==3?}
<div class="stock"><span></span> <span class="status-stock">Под заказ</span></div>
{/if}
{if $available==4?}
<div class="stock"><span></span> <span class="status-stock">Ожидается (в дороге)</span></div>
{/if}
Вопрос в другом. Как выводить 2 в 1 или даже 3 в 1, как на примере опции производитель. Ведь у этой опции есть еще поля, такие как наименование, логотип, страна производителя и проч.Это можно сделать через MIGX, но использовать TV нет желания, по этому и вопрос, как это сделать средствами minishop2 м возможно ли?
Аналогично этому плейсхолдеру
{$_pls['vendor.logo']}
Или проблема в том, чтобы получить значение опции Статус производителя? Если да, то для этого есть msProductOptions
Именно от опции vendor задача отказаться. Еду опцию использовать не под статус производителя (оригинал/неоригинал), а под реального производителя бренд Bosch, Samsung и проч.
Я всё равно не понимаю в чём проблема? Надо отказаться — откажитесь. Используйте «Статус производителя» в условии.
{if статус_производителя == 'оригинал'}
{$_pls['vendor.logo']} {$_pls['vendor.name']}
{else}
{$другая_картинка} {$_pls['vendor.name']} (неоригинал)
{/if}
Выше псевдокод, не надо использовать кириллицу в именах переменных, это плохо с точки зрения эстетики.
Допустим я звожу отдельную опцию и называю ее vendor_status. И если ее значение оригинал, то показываю одну картинку, если нет — другую. А как проверить значение опции, не используя кириллицу? И вывести ее значение в title картине?
Как-то так
{if $vendor_status == 'original'}
<img src="{$_pls['vendor.logo']}" title="{$vendor_status}"> {$_pls['vendor.name']}
{else}
<img src="{$other_img}" title="{$vendor_status}"> {$_pls['vendor.name']}
{/if}
Есть опция combustion_chamber, если ее значение «Закрытая (турбированный)», то пытаюсь вывести картинку турбины в карточке товара, такой конструкцией, не получается…
{if $combustion_chamber== 'Закрытая (турбированный)'}
{/if}
Скриншот: disk.yandex.ru/i/G7rd8tIVXlwTPw
{if $combustion_chamber== 'Закрытая (турбированный)'}
{/if}
Скриншот: disk.yandex.ru/i/G7rd8tIVXlwTPw
Без контекста непонятно ничего. Где ты пишешь это условие?
Вот опция в настройках минишопа: disk.yandex.ru/d/hJns36pPN6sKUw
Если ее значение у товара «Закрытая (турбированный)», то нужно выводить картинку под флагом логотипа так: disk.yandex.ru/i/_fk-YePq0yjO7g
В коде чанка делаю так: disk.yandex.ru/i/wIzG2T87HWPK9g
Код чанка:
Если ее значение у товара «Закрытая (турбированный)», то нужно выводить картинку под флагом логотипа так: disk.yandex.ru/i/_fk-YePq0yjO7g
В коде чанка делаю так: disk.yandex.ru/i/wIzG2T87HWPK9g
Код чанка:
<div class="grid col-md-4 col-sm-6 col-xs-12 ms2_product">
<form method="post" class="ms2_form">
<input type="hidden" name="id" value="{$id}">
<input type="hidden" name="count" value="1">
<input type="hidden" name="options" value="[]">
<div class="item item-hover">
<div class="item-image-wrapper">
[[+{$_pls['vendor.logo']}:isnot=`0`:then=`<div class="vendor-logo-grid">
<img src="{$_pls['vendor.logo']}" alt="Логотип производителя сантехники [[+vendor.name]]" class="img-responsive" title="[[+vendor.name]]" data-toggle="tooltip" />
</div>`:else=``]]
{if $combustion_chamber== 'Закрытая (турбированный)'}
<img src="assets/icons/turbine (1).png" title="Турбированный">
{/if}
<figure class="item-image-container">
<a href="{$id | url}" class="product-image">
{if $medium?}
<img src="{$medium}" data-echo="{$medium}" alt="{$pagetitle}" title="{$pagetitle}" class="img-responsive"/>
{else}
<img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
alt="{$pagetitle}" title="{$pagetitle}"/>
{/if}
</a>
</figure>
</div>
{if $favorite?}
<span class="discount-rect">Акция</span>
<p class="sale-product">[[+sale-product]]</p>
{/if}
{if $new?}
<span class="new-rect">Новинка</span>
{/if}
{if $popular?}
<div class="discount-rect"><span>Популярный</span></div>
{/if}
[[+old_price:isnot=`0`:then=`<span class="discoun-rect sale">СКИДКА [[!saving? &price=`[[+price]]` &old_price=`[[+old_price]]`]] %</span>`:else=``]]
</div><!-- End .item-image-wrapper -->
<div class="item-meta-container">
<h3 class="item-name"><a href="{$id | url}" title="Подробное описание товара">{$pagetitle}</a></h3>
<div class="price-container">
{if $_pls['vendor.name'] in list ['Protherm (Протерм)', 'Bosch (Бош)', 'Buderus (Будерус)', 'Grundfos (Грундфос)', 'Viessmann (Виссманн)', 'Vaillant (Вайлант)', 'Kermi (Керми)', 'Baxi (Бакси)']}
<h3 class="price-on-request-product">Цена по запросу</h3>
{else}
{if $price?}<span class="item-price">{'!msMultiCurrencyPrice' | snippet : ['price' => $price,]} {$_modx->getPlaceholder('msmc.symbol_right')}</span> {else} <span class="price-grid">Цена по запросу</span>{/if}
{/if}
{if $old_price?}<span class="old-price">{$old_price} {$_modx->getPlaceholder('msmc.symbol_right')}</span>{/if}
</div>
[[+article:gt=`0`:then=`
<div class="brand"><span>Артикул:</span> [[+article]]</div>
`:else=``]]
{if $_pls['vendor.name'].0?}<div class="brand"><span>Производитель:</span> {$_pls['vendor.name']}</div>{/if}
{$_modx->runSnippet('msProductOptions', [
'product' => $id,
'ignoreOptions' => 'series,appointment',
'tpl' => 'msProductOptionsGridTpl'
])}
<div class="item-action col-md-12 col-xs-12">
<div class="col-md-6">
<button class="btn btn-custom" type="submit" name="ms2_action" value="cart/add" onclick="yaCounter51837074.reachGoal('addtocart'); return true;">Купить</button>
</div>
<div class="col-md-6">
<input type="number" name="count" class="input-sm form-control" value="1"/>
</div>
</div>
</div>
[[!msOneClick?
&id=`[[+id]]`
&tplBtn=`msoneclickBtnTpl`
&tplForm=`msOneClickFormTpl`
]]
</form>
</div>
А почему ты решил что в чанке есть $combustion_chamber?
Не вот я и не пойму, как вывести картинку в зависимости от значения опции…
Конструкция такая не работает…
Конструкция такая не работает…
{if $combustion_chamber== 'Закрытая (турбированный)'}
<img src="assets/icons/turbine (1).png" title="Турбированный">
{/if}
Получить значение этой опции и проверить. Проверка у тебя есть, значение ты не получил. Значение можно получить используя сниппет msProductOptions и сохранив результат в переменную $combustion_chamber
А можно пример? Пока не понимаю как получить значение и сохранить в переменную(
{set $combustion_chamber = 'msProductOptions' | snippet:[] }
Что то не выводит. Правильно дописал сниппет?
{set $combustion_chamber = 'msProductOptions' | snippet:['product' => $id,'onlyOptions' => 'combustion_chamber'] }
{if $combustion_chamber== 'Закрытая (турбированный)'}
<img src="assets/icons/turbine (1).png" title="Турбированный">
{/if}
Ты посмотрел, что в $combustion_chamber?
В каком смысле?
{if $combustion_chamber== 'Закрытая (турбированный)'}
Справа строка со значением 'Закрытая (турбированный)', а слева что? Переменная? А в переменной что? Может там пусто? Может там совсем не то значение, которое ты ожидаешь. Выведи на экран значение переменной. Думаю там распарсен стандартный чанк вывода опций, а тебе нужно только значение.
Немного начинаю въезжать вроде.
Да, вывел тупо название опции и ее значение… Скриншот: disk.yandex.ru/i/f91DptgR2r3KaA
Не понял как это помогло получить значение и сохранить в переменную(
Не понял как это помогло получить значение и сохранить в переменную(
А тебе надо сравнить название опции и значение или только значение?
Только значение
Да, вывел тупо название опции и ее значение…Зачем вывел и название? если сделать чанк для опции вот таким
{foreach $options as $option}
{if $option.value is array}
{$option.value | join : ', '}
{else}
{$option.value}
{/if}
{/foreach}
то в $combustion_chamber попадёт строка со значением, и тогда оператор if сможет корректно сравнить две строки.
Да, супер, спасибо большое!!! То что надо!!!
Плохо, что ты сам не додумался(((
Используйте у производителя поле страна(country), и пропишите, там если не оригинал, скажем(Китай).
И потом проверяйте
Верхний код нужно переписать, так не пишут.
И потом проверяйте
{$vendor.country=='Китай'? 'Реплика' : 'Оригинал'}
Или у вас у одного товара может быть несколько производителей?Верхний код нужно переписать, так не пишут.
<div class="stock"><span></span> <span class="status-stock">
{switch $available}
{case 1}
В наличии
{case 2}
Нет в наличии
{case 3}
Под заказ
{case 4}
Ожидается (в дороге)
{case default}
Нет в наличии
{/switch}
</span></div>
Спасибо, статус производителя оригинал/неоригинал вывел в {$_pls['vendor.description']}
А существует ли возможность настроить фильтр mfilter2?
Пробую так, не работает
А существует ли возможность настроить фильтр mfilter2?
Пробую так, не работает
'filters' => 'msoption|marka,
msoption|model,
ms|vendor.description:vendors,
parent:parents',
'aliases' => 'ms|vendor==vendor,
msoption|marka==marka,
msoption|model==model',
'filters' => 'msoption|marka,
msoption|model,
msvendor|description
parent:parents',
Странно, выводит все равно наименование производителя
'filters' => 'msoption|marka,
msoption|model,
msvendor|description,
parent:parents',
'aliases' => 'msvendor|description==vendor-status,
Извиняюсь, мой косяк, не в тот шаблон указал! Спасибо большое)
Не получается tpl присвоить этому полю.
Пробую так:
Пробую так:
'tplFilter.outer.vendor|msvendor:description' => 'filterCheckboxOuter',
'tplFilter.row.vendor|msvendor:description' => 'filterCheckboxRow',
,'tplFilter.outer.msvendor|description' => 'filterCheckboxOuter',
'tplFilter.row.msvendor|description' => 'filterCheckboxRow',
,'tplFilter.outer.msvendor' => 'filterCheckboxOuter',
'tplFilter.row.msvendor' => 'filterCheckboxRow',
,'tplFilter.outer.msvendor' => 'filterCheckboxOuter',
'tplFilter.row.msvendor' => 'filterCheckboxRow',
Или лучше использовать для него tpl default?
Можно не указывать, там все равно чекбоксы по умолчанию.
Можно попробовать так:
msvendor|description:boolean
msvendor|description:boolean
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.