Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

Уточнить цену при нулевой стоимости товара Opencart


Рекомендуемые сообщения

Не редко в интернет магазине бывает такая ситуация, когда указать актуальную цену невозможно. Например, товар идет только под заказ или цена на товар меняется довольно часто. У таких товаров цену обычно ставят нулевой и указывают что товар может быть только под заказ. Для клиента цена в ниже нуля выглядит не особо красиво и в ряде случаев может привести к тому, что потенциальный клиент просто уйдет от Вас.

Лучшим решением данной проблемы будет вывод «заглушки», т.е. какой то надписи, например «Уточняйте цену». В идеале конечно делать интерактивное окно запроса уточнения цены, однако это не тема сегодняшней статьи.

Изменения необходимо будет делать в языковых файлах, контроллерах и темплейтах модулей, категорий, странице поиска, странице производителя, списке акционных товаров и непосредственно в карточке товара. Я рассмотрю на примере категорий и карточки товара. Остальные страницы делаются по аналогии с категориями.

Заменяем нулевую цену в категориях опенкарт на «Уточнить цену»

Прежде всего открываем контроллер категорий. В нем добавим языковую переменную, так как в случае мультиязычного магазина прописывать текст в темплейте не верно.

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 %}

Сохраняем, обновляем модификаторы и проверяем результат.

Если все сделано верно, вместо нулевой цены будет написано «Уточняйте цены».

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...