MRGLONIN Posted July 25, 2016 Report Share Posted July 25, 2016 Подскажите как управляться с этим параметром {if $category->id == 5} Вывод плиткой {else} Вывод в ряд {/if} Мне нужно к примеру у меня 2 категории1 - Плитки2 - Список Я хочу задать дизайн для плиток свой и для списка свойСама страница товара неизменна. Категории у меня называются plitka и cpicok Как правильно это все указать и расписать ?. Quote Link to post Share on other sites
Solution Kors Posted July 25, 2016 Solution Report Share Posted July 25, 2016 Если это надо для страниц категорий, то в view/ProductsView.php вместо стандартной строки $this->body = $this->design->fetch('products.tpl'); ставьте что-то типа if ($category->id == 5){//Вывод плиткой из отдельного шаблона$this->body = $this->design->fetch('products_plitka.tpl');}else{//Вывод стандартный$this->body = $this->design->fetch('products.tpl');} Универсальное решение:http://simpla-tuning.com/raznye-shablony-dlya-kategorij Quote Link to post Share on other sites
MRGLONIN Posted July 25, 2016 Author Report Share Posted July 25, 2016 Спасибо за ращения.Не подскажите что не так с этими блоками при просмотре с мобильного только они режутся. Quote Link to post Share on other sites
Maksclub Posted August 2, 2016 Report Share Posted August 2, 2016 Если это надо для страниц категорий, то в view/ProductsView.php вместо стандартной строки $this->body = $this->design->fetch('products.tpl'); ставьте что-то типа if ($category->id == 5){//Вывод плиткой из отдельного шаблона$this->body = $this->design->fetch('products_plitka.tpl');}else{//Вывод стандартный$this->body = $this->design->fetch('products.tpl');} Универсальное решение:http://simpla-tuning.com/raznye-shablony-dlya-kategorij А как лучше? Как в вашем примере? Или условием в шаблоне? Я не люблю программный код трогать просто, но если чем-то лучше... Quote Link to post Share on other sites
Kors Posted August 2, 2016 Report Share Posted August 2, 2016 (edited) А как лучше? Как в вашем примере? Или условием в шаблоне? Я не люблю программный код трогать просто, но если чем-то лучше... Как лучше - зависит от обстоятельств, целей, вкусов и проч. Например, если это надо только для ОДНОЙ категории, то проще так, как написано.Если же у Вас сотня категорий, и Вы хотите, чтобы на них были разные шаблоны, и еще хотите эти шаблоны регулярно переназначать, тогда лучше сделать полноценную доработку, включающую редактирование шаблонов в админке... А вообще способов много. Можно, видимо, сделать и условием в шаблоне. Способов разных много. Пишите свои способы, пусть народ смотрит и оценивает... Edited August 2, 2016 by Kors Quote Link to post Share on other sites
larenso Posted October 6, 2016 Report Share Posted October 6, 2016 У меня есть еще решение как подкатегории вывести в виде плиток) Тоже удобно) Quote Link to post Share on other sites
Kors Posted October 6, 2016 Report Share Posted October 6, 2016 У меня есть еще решение как подкатегории вывести в виде плиток) Тоже удобно) У меня теперь есть знание, что у larenso есть удобное решение. Очень полезно такое знать. А еще лучше на бумажке это написать и повесить на видном месте, чтоб не позабыть... Quote Link to post Share on other sites
get31 Posted January 21, 2023 Report Share Posted January 21, 2023 А сделать в карточке товара если количество вариантов ноль? if ($product->variant-stock == 0){ return $this->design->fetch('product_stock.tpl'); }else{ return $this->design->fetch('product.tpl'); } Как правильно написать такого плана в ProductView? Quote Link to post Share on other sites
phukortsin Posted January 21, 2023 Report Share Posted January 21, 2023 Примерно так и написать. Желательно учесть только, что 1. Написанное условие бессмысленно. Возможно, надо писать $product->variant->stock == 0. 2. "количество вариантов ноль" - такого штатно не бывает в принципе, у товара при редактировании в админке всегда есть минимум 1 вариант. Если имеете в виду, что у каждого варианта товара кол-во нулевое, то так и писать надо, и соответственно условие менять... Quote Link to post Share on other sites
get31 Posted January 21, 2023 Report Share Posted January 21, 2023 (edited) 25 минут назад, phukortsin сказал: Примерно так и написать. Желательно учесть только, что 1. Написанное условие бессмысленно. Возможно, надо писать $product->variant->stock == 0. 2. "количество вариантов ноль" - такого штатно не бывает в принципе, у товара при редактировании в админке всегда есть минимум 1 вариант. Если имеете в виду, что у каждого варианта товара кол-во нулевое, то так и писать надо, и соответственно условие менять... Да, имел ввиду что количество. а можно как-то с foreach совместить? ибо в шаблоне к примеру если из 4х вариантов с количеством 0, но один вариант имеет количество бесконечное, то отображается в шаблоне как с количеством ноль: if ($product->variant-stock == 0){ return $this->design->fetch('product_stock.tpl'); Как правильно прописать условие, чтобы отображалось в шаблоне return $this->design->fetch('product.tpl'); ? Edited January 21, 2023 by get31 Quote Link to post Share on other sites
get31 Posted January 21, 2023 Report Share Posted January 21, 2023 Все, вопрос закрыт) спасибо) Quote Link to post Share on other sites
get31 Posted January 21, 2023 Report Share Posted January 21, 2023 Ссори, вопрос все еще открыт))))) Отображение идет в разные .tpl, но хочу сделать вывод в файле где количество варианта есть - вывод тех вариантов, которые с нулевым количеством. Подскажите плиз, как это сделать? Quote Link to post Share on other sites
phukortsin Posted January 22, 2023 Report Share Posted January 22, 2023 Так и делать - писать условие проверки кол-ва у вариантов. {foreach $product->variants as $v} {if $v->stock == 0} {/if} {/foreach} Quote Link to post Share on other sites
get31 Posted January 22, 2023 Report Share Posted January 22, 2023 1 час назад, phukortsin сказал: Так и делать - писать условие проверки кол-ва у вариантов. {foreach $product->variants as $v} {if $v->stock == 0} {/if} {/foreach} у меня так и стоит, но не выводит варианты с нулевым количеством Quote Link to post Share on other sites
phukortsin Posted January 22, 2023 Report Share Posted January 22, 2023 Надо все проверять, в том числе то, что эти варианты поступают в шаблон из PHP. Quote Link to post Share on other sites
get31 Posted January 22, 2023 Report Share Posted January 22, 2023 3 часа назад, phukortsin сказал: Надо все проверять, в том числе то, что эти варианты поступают в шаблон из PHP. Делал на стандартной Simpla. В ProductView.php заменил вывод шаблона if ($product->variant->stock == 0){ return $this->design->fetch('product_stock.tpl'); }else{ return $this->design->fetch('product.tpl'); } В шаблонах product.tpl {foreach $product->variants as $v} {if $v->stock > 0} <tr class="variant"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/if} {/foreach} {foreach $product->variants as $v} {if $v->stock == 0} <tr class="variant" style="opacity:.4;background:lime;"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/if} {/foreach} в админке добавляем несколько вариантов, сразу ставим количество НОЛЬ, сохраняем, проверяем - работает норм. Потом одному варианту (не первому) убираем количество ноль и получаем не рабочий метод. Quote Link to post Share on other sites
phukortsin Posted January 23, 2023 Report Share Posted January 23, 2023 Надо проверять все моменты. Из написанного кода 1. неясно, какой набор вариантов поступает в шаблон из PHP, 2. как идет вывод в шаблоне product_stock.tpl. Quote Link to post Share on other sites
get31 Posted January 23, 2023 Report Share Posted January 23, 2023 2 часа назад, phukortsin сказал: Надо проверять все моменты. Из написанного кода 1. неясно, какой набор вариантов поступает в шаблон из PHP, 2. как идет вывод в шаблоне product_stock.tpl. 1. варианты из php $variants = array(); foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) $variants[$v->id] = $v; $product->variants = $variants; // Вариант по умолчанию if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id])) $product->variant = $variants[$v_id]; else $product->variant = reset($variants); 2. Вывод аналогичен product.tpl, только заменил <h1> на "ссори, товары не в наличии", чтобы понять переключает ли шаблон. Ну и {foreach $product->variants as $v} выше, который правильный Quote Link to post Share on other sites
phukortsin Posted January 23, 2023 Report Share Posted January 23, 2023 Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... Quote Link to post Share on other sites
get31 Posted January 23, 2023 Report Share Posted January 23, 2023 3 часа назад, phukortsin сказал: Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Quote Link to post Share on other sites
sergeevizh Posted January 23, 2023 Report Share Posted January 23, 2023 7 часов назад, get31 сказал: Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Непонятно зачем вы дергаете вьюшку, не проще вашу манипуляцию реализовать внутри вью? Стукните в личку, думаю разберёмся за час. Quote Link to post Share on other sites
phukortsin Posted January 24, 2023 Report Share Posted January 24, 2023 15 часов назад, get31 сказал: Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Так надо решать вопрос целиком комплексно, а Вы пока кидаетесь из стороны в сторону по методу "одно лечим, другое калечим". А вопрос-то не особо сложный... Quote Link to post Share on other sites
get31 Posted January 24, 2023 Report Share Posted January 24, 2023 3 часа назад, phukortsin сказал: Так надо решать вопрос целиком комплексно, а Вы пока кидаетесь из стороны в сторону по методу "одно лечим, другое калечим". А вопрос-то не особо сложный... Честно, не пойму. В 23.01.2023 в 09:47, get31 сказал: foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) $variants[$v->id] = $v; Нужно это заделать в if где в одном показать in_stock в другом без? или как? Quote Link to post Share on other sites
Kosjak76 Posted January 24, 2023 Report Share Posted January 24, 2023 Я вообще не пойму в чем проблема? Если надо определить, есть ли у товара варианты в наличии - можно обойти все варианты и подсчитать, сколько есть в наличии. Либо как вариант - выбираем варианты, которые есть в наличии. Если таких вариантов нет, то тогда выбираем варианты, которых нет в наличии и показываем шаблон, который нет в наличии. Quote Link to post Share on other sites
phukortsin Posted January 24, 2023 Report Share Posted January 24, 2023 На мой взгляд, проблема в том, что товарищ делает методом тыка, особо не понимая смысла. А как еще можно интерпретировать глуповатую фразу: 2 часа назад, get31 сказал: Нужно это заделать в if где в одном показать in_stock в другом без? или как? Рассуждает про варианты с нулевым кол-вом, а изначально выбирает варианты только с НЕнулевым. Что ему сказать - если надо непременно надо "заделывать", то заделывай да смотри. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.