Перейти к содержанию
View in the app

A better way to browse. Learn more.

Русскоязычное сообщество Opencart

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

В связи с блокировкой банка QIWI оплата через сайт не возможна.
Для оплаты и получения дополнений просьба писать в личные сообщения 
Admin*у
или в Телеграмм https://t.me/pascha_opencart
После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

Уточнить цену при нулевой стоимости товара 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 %}

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

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

Последние посетители 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.