MRGLONIN Опубликовано 25 июля, 2016 Жалоба Поделиться Опубликовано 25 июля, 2016 Подскажите как управляться с этим параметром {if $category->id == 5} Вывод плиткой {else} Вывод в ряд {/if} Мне нужно к примеру у меня 2 категории1 - Плитки2 - Список Я хочу задать дизайн для плиток свой и для списка свойСама страница товара неизменна. Категории у меня называются plitka и cpicok Как правильно это все указать и расписать ?. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Kors Опубликовано 25 июля, 2016 Решение Жалоба Поделиться Опубликовано 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 Цитата Ссылка на сообщение Поделиться на другие сайты
MRGLONIN Опубликовано 25 июля, 2016 Автор Жалоба Поделиться Опубликовано 25 июля, 2016 Спасибо за ращения.Не подскажите что не так с этими блоками при просмотре с мобильного только они режутся. Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 2 августа, 2016 Жалоба Поделиться Опубликовано 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 А как лучше? Как в вашем примере? Или условием в шаблоне? Я не люблю программный код трогать просто, но если чем-то лучше... Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 августа, 2016 Жалоба Поделиться Опубликовано 2 августа, 2016 (изменено) А как лучше? Как в вашем примере? Или условием в шаблоне? Я не люблю программный код трогать просто, но если чем-то лучше... Как лучше - зависит от обстоятельств, целей, вкусов и проч. Например, если это надо только для ОДНОЙ категории, то проще так, как написано.Если же у Вас сотня категорий, и Вы хотите, чтобы на них были разные шаблоны, и еще хотите эти шаблоны регулярно переназначать, тогда лучше сделать полноценную доработку, включающую редактирование шаблонов в админке... А вообще способов много. Можно, видимо, сделать и условием в шаблоне. Способов разных много. Пишите свои способы, пусть народ смотрит и оценивает... Изменено 2 августа, 2016 пользователем Kors Цитата Ссылка на сообщение Поделиться на другие сайты
larenso Опубликовано 6 октября, 2016 Жалоба Поделиться Опубликовано 6 октября, 2016 У меня есть еще решение как подкатегории вывести в виде плиток) Тоже удобно) Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 6 октября, 2016 Жалоба Поделиться Опубликовано 6 октября, 2016 У меня есть еще решение как подкатегории вывести в виде плиток) Тоже удобно) У меня теперь есть знание, что у larenso есть удобное решение. Очень полезно такое знать. А еще лучше на бумажке это написать и повесить на видном месте, чтоб не позабыть... Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 21 января, 2023 Жалоба Поделиться Опубликовано 21 января, 2023 А сделать в карточке товара если количество вариантов ноль? if ($product->variant-stock == 0){ return $this->design->fetch('product_stock.tpl'); }else{ return $this->design->fetch('product.tpl'); } Как правильно написать такого плана в ProductView? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 21 января, 2023 Жалоба Поделиться Опубликовано 21 января, 2023 Примерно так и написать. Желательно учесть только, что 1. Написанное условие бессмысленно. Возможно, надо писать $product->variant->stock == 0. 2. "количество вариантов ноль" - такого штатно не бывает в принципе, у товара при редактировании в админке всегда есть минимум 1 вариант. Если имеете в виду, что у каждого варианта товара кол-во нулевое, то так и писать надо, и соответственно условие менять... Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 21 января, 2023 Жалоба Поделиться Опубликовано 21 января, 2023 (изменено) 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'); ? Изменено 21 января, 2023 пользователем get31 Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 21 января, 2023 Жалоба Поделиться Опубликовано 21 января, 2023 Все, вопрос закрыт) спасибо) Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 21 января, 2023 Жалоба Поделиться Опубликовано 21 января, 2023 Ссори, вопрос все еще открыт))))) Отображение идет в разные .tpl, но хочу сделать вывод в файле где количество варианта есть - вывод тех вариантов, которые с нулевым количеством. Подскажите плиз, как это сделать? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 января, 2023 Жалоба Поделиться Опубликовано 22 января, 2023 Так и делать - писать условие проверки кол-ва у вариантов. {foreach $product->variants as $v} {if $v->stock == 0} {/if} {/foreach} Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 22 января, 2023 Жалоба Поделиться Опубликовано 22 января, 2023 1 час назад, phukortsin сказал: Так и делать - писать условие проверки кол-ва у вариантов. {foreach $product->variants as $v} {if $v->stock == 0} {/if} {/foreach} у меня так и стоит, но не выводит варианты с нулевым количеством Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 22 января, 2023 Жалоба Поделиться Опубликовано 22 января, 2023 Надо все проверять, в том числе то, что эти варианты поступают в шаблон из PHP. Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 22 января, 2023 Жалоба Поделиться Опубликовано 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} в админке добавляем несколько вариантов, сразу ставим количество НОЛЬ, сохраняем, проверяем - работает норм. Потом одному варианту (не первому) убираем количество ноль и получаем не рабочий метод. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 23 января, 2023 Жалоба Поделиться Опубликовано 23 января, 2023 Надо проверять все моменты. Из написанного кода 1. неясно, какой набор вариантов поступает в шаблон из PHP, 2. как идет вывод в шаблоне product_stock.tpl. Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 23 января, 2023 Жалоба Поделиться Опубликовано 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} выше, который правильный Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 23 января, 2023 Жалоба Поделиться Опубликовано 23 января, 2023 Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 23 января, 2023 Жалоба Поделиться Опубликовано 23 января, 2023 3 часа назад, phukortsin сказал: Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 23 января, 2023 Жалоба Поделиться Опубликовано 23 января, 2023 7 часов назад, get31 сказал: Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Непонятно зачем вы дергаете вьюшку, не проще вашу манипуляцию реализовать внутри вью? Стукните в личку, думаю разберёмся за час. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 24 января, 2023 Жалоба Поделиться Опубликовано 24 января, 2023 15 часов назад, get31 сказал: Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии) Так надо решать вопрос целиком комплексно, а Вы пока кидаетесь из стороны в сторону по методу "одно лечим, другое калечим". А вопрос-то не особо сложный... Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 24 января, 2023 Жалоба Поделиться Опубликовано 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 в другом без? или как? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 24 января, 2023 Жалоба Поделиться Опубликовано 24 января, 2023 Я вообще не пойму в чем проблема? Если надо определить, есть ли у товара варианты в наличии - можно обойти все варианты и подсчитать, сколько есть в наличии. Либо как вариант - выбираем варианты, которые есть в наличии. Если таких вариантов нет, то тогда выбираем варианты, которых нет в наличии и показываем шаблон, который нет в наличии. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 24 января, 2023 Жалоба Поделиться Опубликовано 24 января, 2023 На мой взгляд, проблема в том, что товарищ делает методом тыка, особо не понимая смысла. А как еще можно интерпретировать глуповатую фразу: 2 часа назад, get31 сказал: Нужно это заделать в if где в одном показать in_stock в другом без? или как? Рассуждает про варианты с нулевым кол-вом, а изначально выбирает варианты только с НЕнулевым. Что ему сказать - если надо непременно надо "заделывать", то заделывай да смотри. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.