Pascha Опубликовано 6 ноября, 2022 Поделиться Опубликовано 6 ноября, 2022 Не редко в интернет магазине бывает такая ситуация, когда указать актуальную цену невозможно. Например, товар идет только под заказ или цена на товар меняется довольно часто. У таких товаров цену обычно ставят нулевой и указывают что товар может быть только под заказ. Для клиента цена в ниже нуля выглядит не особо красиво и в ряде случаев может привести к тому, что потенциальный клиент просто уйдет от Вас. Лучшим решением данной проблемы будет вывод «заглушки», т.е. какой то надписи, например «Уточняйте цену». В идеале конечно делать интерактивное окно запроса уточнения цены, однако это не тема сегодняшней статьи. Изменения необходимо будет делать в языковых файлах, контроллерах и темплейтах модулей, категорий, странице поиска, странице производителя, списке акционных товаров и непосредственно в карточке товара. Я рассмотрю на примере категорий и карточки товара. Остальные страницы делаются по аналогии с категориями. Заменяем нулевую цену в категориях опенкарт на «Уточнить цену» Прежде всего открываем контроллер категорий. В нем добавим языковую переменную, так как в случае мультиязычного магазина прописывать текст в темплейте не верно. catalog/controller/product/category.php после $data['text_limit'] = $this->language->get('text_limit'); Добавим $data['text_nullpprice'] = $this->language->get('text_nullpprice'); Тут же добавим новую переменную, чтобы определять «чистую» цену. Находим $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); И под ней добавляем $pricenull = $result['price']; Далее ищем 'price' => $price, и сразу за нм добавляем 'pricenull' => $pricenull, Теперь добавим переменную в языковой файлах catalog/language/ru-ru/product/category.php $_['text_limit'] = 'Показывать:'; Добавляем $_['text_nullpprice'] = 'Уточняйте цену'; Если в вашем магазине несколько языков, сделайте изменения в каждом из них с соответствующим переводом После переходим непосредственно к темплейту категорий по адресу catalog/view/theme/default/template/product/category.tpl(category.twig) Находим примерно на 108 строке конструкцию <?php if (!$product['special']) { ?> <?php echo $product['price']; ?> <?php } else { ?> и меняем ее на <?php if (!$product['special']) { ?> <?php if (product['pricenull'] > '0') { ?> <?php echo product['price']; ?> <?php } else { ?> <?php echo $text_nullpprice; ?> <?php } ?> <?php } else { ?> Для версии опенкарт 3.х Находим первое вхождение {{ product.price }} И меняем на {% if (product.pricenull > '0') %} {{ product.price }} {% else %} {{ product.text_nullpprice }} {% endif %} Заметьте, изменения делаем только для основной цены, так как нулевая цена не предусматривает скидок, это логично. Сохраняем, обновляем модификаторы и если все сделано верно, то у товаров с нулевой ценой будет выведен текст, который Вы указали в языковом файле. Для модулей и типовых страниц, таких как поиск, производители порядок действий будет идентичным. Заменяем нулевую цену в карточке опенкарт на «Уточнить цену» Как и в случае с категориями, переходим в контроллер catalog/controller/product/product.php и добавляем языковую переменную. После $data['text_loading'] = $this->language->get('text_loading'); Добавляем $data['text_nullpprice'] = $this->language->get('text_nullpprice'); Тут же находим $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); И снизу добавляем $data['pricenull'] = $product_info['price']; Далее ищем $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); И так же снизу добавляем $pricenull = $product_info['price']; И дальше ищем 'price' => $price, и ниже добавляем 'pricenull' => $pricenull, С контроллером закончили. Теперь необходимо ее прописать в языковом файле товара по адресу catalog/language/ru-ru/product/product.php После $_['text_year'] = 'год'; Добавляем $_['text_nullpprice'] = 'Уточняйте цену'; Для других языков делаем то же самое. Далее можно переходить к темплейту карточки товара catalog/view/theme/default/template/product/product.tpl(product.twig) Здесь изменения будем делать как для самого товара, так и для рекомендуемых товаров. Находим <?php if (!$special) { ?> <li> <h2><?php echo $price; ?></h2> </li> <?php } else { ?> И меняем на <?php if (!$special) { ?> <li> <h2><?php if (pricenull > '0') { ?><?php echo $price; ?><?php } else { ?><?php echo $text_nullpprice; ?><?php } ?></h2> </li> <?php } else { ?> Для версии 3.х Находим {% if not special %} <li> <h2>{{ price }}</h2> </li> {% else %} Меняем на {% if not special %} <li> <h2>{% if (pricenull > '0') %}{{ price }}{% else %}{{ text_nullpprice }}{% endif %} </h2> </li> {% else %} Теперь добавим доработку для рекомендуемых. Находим <?php if (!$product['special']) { ?> <?php echo $product['price']; ?> <?php } else { ?> И меняем на <?php if (!$product['special']) { ?> <?php if (product['pricenull'] > '0') { ?> <?php echo product['price']; ?> <?php } else { ?> <?php echo $text_nullpprice; ?> <?php } ?> <?php } else { ?> Для версии опенкарт 3.х Находим первое вхождение {{ product.price }} И меняем на {% if (product.pricenull > '0') %} {{ product.price }} {% else %} {{ product.text_nullpprice }} {% endif %} Сохраняем, обновляем модификаторы и проверяем результат. Если все сделано верно, вместо нулевой цены будет написано «Уточняйте цены». 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.