LSDance Опубликовано 31 мая, 2017 Жалоба Поделиться Опубликовано 31 мая, 2017 (изменено) И снова здравствуйте, кто-нибудь уже делал вывод только тех свойств, которые были отмечены (в админке) для конкретной группы или товара? Имеется в виду не полная карточка, а именно в списке товаров ( ProductsView ). Превью во вложении. Изменено 31 мая, 2017 пользователем LSDance Цитата Ссылка на сообщение Поделиться на другие сайты
LSDance Опубликовано 31 мая, 2017 Автор Жалоба Поделиться Опубликовано 31 мая, 2017 И так, вот решение для вывода свойств товара для каждой КАТЕГОРИИ: 1. База данныхДобавляем новое поле в таблице s_features - in_category - int(11) . На всякий случай указал обычный int , но можно поставить и меньше. 2. api/Features.phpв конец класса после метода get_product_options всталяем новый метод : public function get_visible_options($product_id) { $query = $this->db->placehold("SELECT f.id as feature_id, f.name, po.value, po.product_id FROM __options po LEFT JOIN __features f ON f.id=po.feature_id WHERE po.product_id in(?@) AND f.in_category = 1 ORDER BY f.position", (array)$product_id); $this->db->query($query); return $this->db->results(); } Это метод который возвращает нам видимые для категории свойства 3. simpla/design/html/features.tpl строка 35 добавляем Добавляем ajax кнопку для включения / выключения свойства <div id="list"> {foreach $features as $feature} <div class="{if $feature->in_filter}in_filter{/if} {if !$feature->in_category}invisible{/if} row"> ... <div class="icons cell"> <!-- Добавляем ajax кнопку для включения / выключения свойства --> <a title="Использовать в категории" class="in_category enable" href='#' ></a> <a title="Использовать в фильтре" class="in_filter" href='#' ></a> <a title="Удалить" class="delete" href='#' ></a> </div> <div class="clear"></div> </div> {/foreach} </div> После фунции на 157 строке (a.in_filter) добавляем еще одну // Указать "в категории"/"не в категории" // Показать категорию $("a.enable").click(function() { var icon = $(this); var line = icon.closest(".row"); var id = line.find('input[type="checkbox"][name*="check"]').val(); var state = line.hasClass('invisible')?1:0; icon.addClass('loading_icon'); $.ajax({ type: 'POST', url: 'ajax/update_object.php', data: {'object': 'feature', 'id': id, 'values': {'in_category': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'}, success: function(data){ icon.removeClass('loading_icon'); if(state) line.removeClass('invisible'); else line.addClass('invisible'); }, dataType: 'json' }); return false; }); 4. simpla/design/html/feature.tplдобавляем чекбокс для свойств в категории 77 строка <div class="block"> <h2>Настройки свойства</h2> <ul> <li><input type=checkbox name=in_filter id=in_filter {if $feature->in_filter}checked{/if} value="1"> <label for=in_filter>Использовать в фильтре</label></li> <!-- Update in_catergory --> <li><input type=checkbox name=in_category id=in_category {if $feature->in_category}checked{/if} value="1"> <label for=in_category>Использовать в категории</label></li> </ul> </div> 5. simpla/FeatureAdmin.phpпосле 14 строки вставляем код 14 строка $feature->in_filter = intval($this->request->post('in_filter')); // <!-- Update in_catergory --> $feature->in_category = intval($this->request->post('in_category')); 6. view/ProductsView.phpпосле строк: foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } всавляем: // Вывод свойств товара в ленту $properties = $this->features->get_visible_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; } у меня это 196 строка перед строками $this->design->assign('products', $products); 7 И выводим в шаблоне <ul class="product_features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> Вот вроде и все. Данная модификация позволяет выводить в ленту товаров только те свойства, которы вы хотите использовать в данной категории и ни как не влияет на выводимые свойства в карточке. ВАЖНО!!! Перед тем как модифицировать что-либо, делайте Бэкап!!! Всем Добра!) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.