Магазин направлен на два направления. Розница и ОПТ. Суть в том что бы товары с розницей отображались на сайте с ценами, а товары с ОПТом и цены для них были скрыты до регистрации покупателей. Такое можно реализовать?
Вариантов как всегда 2. 1) модуль 2)руками. Руками принцип работы примерно такой: 1)клонируем поле с ценой в движке (т.е. задаем новую переменную, создаем для нее поле в б.д., прописываем в моделях, контроллерах и шаблонах) если не понимаете как клонировать, то расписывать слишком долго, но в принципе я сам в свое время понял и сложного ничего нет. 2)в движке есль настройка, позволяющая скрывать цену для незарегистрированных пользователей, используем эту настройку, чтобы скрыть оптовую цену.
Ок, предположим, что ISBN. Ставьте 1 в это поле, если товар оптовый. Давайте логику для вывода в категории напишу вам, примерно, дальше я думаю поймете.. Где-нибудь в controller/catalog/category.php, скажем, прям перед getProducts($data); узнаем, является ли покупатель оптовым. PHP: $this->data['is_opt_customer'] = ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == 5); Тут 5 - это идентификатор группы оптовых покупателей. Мы проверили, залогинен ли вообще покупатель, и является ли он оптовым. Группу создадите и будете добавлять в нее людей Добавим вывод в шаблон ISBN Найдите PHP: $this->data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image, Добавьте PHP: $this->data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'isbn' => $result['isbn'], Контроллер закончен. Файл шаблона сatalog/view/theme/ВАШАТЕМА/template/product/category.tpl Находим следующее: PHP: <?php if ($product['price']) { ?><div class="price"><?php if (!$product['special']) { ?><span class="special-price"><?php echo $product['price']; ?></span><?php } else { ?><span class="price-old"><?php echo $product['price']; ?></span><span class="price-new"><?php echo $product['special']; ?></span><?php } ?><?php if ($product['tax']) { ?><span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span><?php } ?></div><?php } ?> И, собственно, дописываем наше условие PHP: <? if ($product['isbn']==1) { ?><? if ($is_opt_customer) { ?>//ПОКАЗЫВАЕМ ЦЕНУ ОПТОВИКУ<?php if ($product['price']) { ?><div class="price"><?php if (!$product['special']) { ?><span class="special-price"><?php echo $product['price']; ?></span><?php } else { ?><span class="price-old"><?php echo $product['price']; ?></span><span class="price-new"><?php echo $product['special']; ?></span><?php } ?><?php if ($product['tax']) { ?><span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span><?php } ?></div><?php } ?><? } else { ?>ТЕКСТ, ДЛЯ ОПТОВЫХ ТОВАРОВ ВМЕСТО ЦЕНЫ НЕЗАЛОГИНЕННЫМ ПОЛЬЗОВАТЕЛЯМ<? } ?><? } else { ?><?php if ($product['price']) { ?><div class="price"><?php if (!$product['special']) { ?><span class="special-price"><?php echo $product['price']; ?></span><?php } else { ?><span class="price-old"><?php echo $product['price']; ?></span><span class="price-new"><?php echo $product['special']; ?></span><?php } ?><?php if ($product['tax']) { ?><span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span><?php } ?></div><?php } ?><? } ?> Вот посоветовали делать таким образом
Частично правильно. Но такой вариант скрывает не товары от незарегистрированных, а только их цены. Если нужно скрыть и сами товары, то править нужно /catalog/model/catalog/product.php. Например, для товаров в категориях и поиска нужно править getProducts и getTotalProducts. После PHP: if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } Добавляем PHP: if ($customer_group_id != 5) { $sql .= " AND p.isbn <> 1"; } Это скроет для неоптовиков все оптовые товары, а оптовики увидят всё.