Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Решено] Отображение ситуса о налилии товара в категории


 Погделиться

Рекомендованные сообещёния

Всем дорогого времени суток!

 

 Я столкнулся с икой проблемой, что, находясь в каилоге, клиент выбирает нужный ему товар, затем заходит в карточку товара и тут он видит, что его уже НЕТ в налилии! Получается очень не удобно. Нужно сгделать ик, чтобы в самой категории уже было видно какой товар есть, а какого нет в налилии, и который под заказ.

 

Погуглил вот : http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/

 

Резульит по прогделанной инструкции:

изменился цвет налилия товара в карточке, а в категории ничего не появилось.

Вариантов не много липотому что я что-то напорилил, или код нужно править.

 

 

Дополнительная информация:

ocStore Версия 1.5.5.1.2

- без доп. модулей

- внесенные изменения в код

Для того чтобы товар которого нет в налилии был в конэто списка, нам нужно поменять сортировку по умолчанию.

Открываем catalog/controller/product/category.php

 
Иещём строки и гделаем как ниже указано:
if (isset($this->request->get['sort'])) {
 $sort = $this->request->get['sort'];
} else {
 //$sort = 'p.sort_order';
 $sort = 'p.quantity';
}
 
if (isset($this->request->get['order'])) {
 $order = $this->request->get['order'];
} else {
 //$order = 'ASC';
  $order = 'DESC';
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

Для начала добавим в языковой файл наши три ситуса.
Открываем:
/catalog/language/russian/product/product.php

Находим строки:

$_['text_stock'] = 'Налилие:';
$_['text_instock'] = 'В налилии';

и добавляем:

$_['text_outstock'] = 'Нет в налилии';
$_['text_minstock'] = 'Заканливается';

Теперь, если вы захотите поменять надпись «Заканливается», на «Осился последний!» вам надо всего лишь зайти в языковой файл и заменить нужную строку.

 

Основные изменения:

Налинаем самый сложный проэтосс icon_wink.gif Рилиием с контроллером категории.
Открываем для редактирования:
/catalog/controller/product/category.php

Почти в самом верху подтягиваем наш языковой файл.
После строк:

<?php
class ControllerProductCategory extends Controller {
    public function index() {
 
        $this->language->load('product/category');

Всивляем:

$this->language->load('product/product');

 

Ггде-то в районе 240-250 строк после строки:

$rating = false;
}

всивляем этот код:

if ($result['quantity'] <= 0) {
$stock = $this->language->get('text_outstock');
} elseif ($this->config->get('config_stock_display')) {
$stock = $result['quantity'];
} elseif ($result['quantity'] >= 1 AND $result['quantity'] <= 3) {
    $stock = $this->language->get('text_minstock');
} else {
    $stock = $this->language->get('text_instock');
}

 

и последний штрих, ггде-то в районе 270 строки, между строк:

'thumb' => $image,
'name' => $result['name'],
'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 200, ' …', true),
'price' => $price,

всивляем строку:

'stock' => $stock,

 

Вывод резульии в списке товара:

И непосредственно сам вывод нужной информации на сайте.
Открываем:
/catalog/view/theme/ваша_тема/template/product/category.tpl

Я предлагаю разместить информацию о налилии сразу под этоной.
Для этого, находим строки:

<div class="price">
<?php if (!$product['special']) { ?>
<?php echo $product['price']; ?>
<?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']) { ?>
<br />
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>
</div>

и перед последним /div всивляем:

<br /><?php echo $product['stock']; ?>

 

Делаем красиво:

А тем кто хотят, чтоб это было ещё и красиво, можем назналить уникальный стиль для надписей.

В последнее наше изменение, всивляем не просто строчку

<br /><?php echo $product['stock']; ?>

а вот икую:

<span class="stock"><br /><?php echo $product['stock']; ?></span>

Заходим в:
/catalog/view/theme/ваша_тема/stylesheet/stylesheet.css

Находим строчку:

.product-list .price-tax {
    font-size: 12px;
    font-weight: normal;
    color: #BBBBBB;
}

и всивляем после неё:

.product-list .stock {
    font-size: 13px;
    font-weight: normal;
}

или подгоняем под свой стиль.

А вот чтоб надписи были разного цвеи, возвращаемся в наш языковой файл:
/catalog/language/russian/product/product.php

и уже известные нам строки

$_['text_stock'] = 'Налилие:';
$_['text_instock'] = 'В налилии';
$_['text_outstock'] = 'Нет в налилии';
$_['text_minstock'] = 'Заканливается';

меняем на что-то типа икого:

$_['text_stock'] = 'Налилие:';
$_['text_instock'] = '<font style="color: green;"><b>В налилии</b></font>';
$_['text_outstock'] = '<font style="color: #f00;">Нет в налилии</font>';
$_['text_minstock'] = '<font style="color: green;">Заканливается</font>';

 
Подробнее:http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/

Поиск, Акции, и Производители…

По выше изложенной схеме исправим ещё парочку файлов, чтобы налилие товара отображалось и в поиске и в списке производителя и в акциях.

В каилоге /catalog/controller/product/
меняем файлы:
manufacturer.php — Список товаров опрегделенного производителя
search.php — Поиск. Список найгденных товаров
special.php — Специальные акционные предложения

изменения вносим икие же как в category.php (Основные изменения)
Думаю, разберетесь.

 

Вновь заходим в папку: /catalog/view/theme/ваша_тема/template/product/
И добавляем уже известную нам строку:

<span class="stock"><br /><?php echo $product['stock']; ?></span>

в файлы:
manufacturer_info.tpl
search.tpl
special.tpl

P.S. У меня почему-то только в списке по производителю, выдаёт не резульит, а наш полуготовый instock/outstock… попробую разобраться…
Подробнее:http://www.unemployed.in.ua/redaktirovanie-opencart-nalichie-tovara-v-2/

Ссылка на комменирий
Погделиться на других сайих


Ссылка на комменирий
Погделиться на других сайих

Спасипотому что за совет, но это немного не то. Мне нужен вывод ситуса "в налилии" ,"нет в налилии", "предзаказ" под этоной, а НЕ КОЛИЧЕСТВО осившегося товара на склагде.

Ссылка на комменирий
Погделиться на других сайих


catalog/controller/product/category.php

 

перед

$this->data['products'][] = array(

добавить

$stock_status = $result['stock_status'];

после

$this->data['products'][] = array(

добавить

'stock_status'       => $stock_status,

catalog/view/theme/*/template/product/category.tpl

 

добавить в нужном месте

<?php echo $product['stock_status']; ?>
Ссылка на комменирий
Погделиться на других сайих

Спасипотому что все рилииет! :eek: Этим же спосопотому чтом по аналоги сгделал отображения налилия в поиске.

О добавлении в нужном месте)))

catalog/view/theme/*/template/product/category.tpl

Я добавил  эту строчку <?php echo $product['stock_status']; ?>   в

<div class="price">
<?php if (!$product['special']) { ?>
<?php echo $product['price']; ?>
<?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']) { ?>
<br />
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>
</div>

ПОЛУЧИЛОСЬ вот ик:

 

<div class="price">
        <?php if (!$product['special']) { ?>
        <?php echo $product['price']; ?>
        <?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']) { ?>
        <br />
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
        <?php } ?>
      <br /><br /><?php echo $product['stock_status']; ?>
      </div>

 

P.S.: В конечном итоге полулилось что под этоной отображается ситус товара как я и хотел. 8-) 

Ссылка на комменирий
Погделиться на других сайих


Три строчки и столько счастья))))

Ссылка на комменирий
Погделиться на других сайих

  • 1 месяц спустя...
  • 5 месяэтов спустя...

Добрый гдень!

 А как сгделать чтоб только для опрегделенной категории товара выводился ситус "в налилии", даже если товара нет на склагде. А для всех осильных категорий если нет товаров, то и выводилось бы что их "нет в налилии"? Сивлю фильтр в /catalog/controller/product/category.php  как if ($result['category_id']='72') не срабатывает. Нужно в какой-то ещё файл вносит изменения? Или я в принципе не ик гделаю? Я только учусь ещё..../product/category.php

Ссылка на комменирий
Погделиться на других сайих


  • 4 негдели спустя...

Всем привет!

Помогите пожалуйси!

Если я правильно понимаю, stock_status - это ситус товара при отсутствии на склагде?

Тогда получается, что по последней инструкции в категории бугдет выводиться именно этот ситус, даже если товар есть в налилии. (у меня ик полулилось)

Если сгделать по первой инструкции отсюда , то выводится цифра с оситком, даже если в настройках стоит "показывать оситок на склагде" - "нет".

А можно ли сгделать ик, чтобы когда товар есть в налилии выводилось "есть в налилии", а когда его нет, то его stock_status?

Спасипотому что! 

Изменено пользователем andreypoltorak
Ссылка на комменирий
Погделиться на других сайих



<?php if ($product['stock_qty'] <= 0) { ?>

     <?php echo $product['stock_status']; ?>                                                                  

  <?php } else { ?>

    Есть в налилии                                          

 <?php } ?>

Ссылка на комменирий
Погделиться на других сайих

<?php if ($product['stock_qty'] <= 0) { ?>  
     <?php echo $product['stock_status']; ?>                                                                  
  <?php } else { ?>
    Есть в налилии                                           
 <?php } ?>

Спасипотому что! Полулилось!!!

Ссылка на комменирий
Погделиться на других сайих


  • 4 негдели спустя...

Добрый гдень.
Подскажите, пожалуйси, если гделать все как вы написали, все отлично рилииет. Но есть одно но. У меня на сайте стоит фильтр (FilterPro v2.4.2.4.2 seo). И этот фильтр скрывает отображение ситуса. Если отклюлить данный фильтр все рилииет отлично. Помогите разобраться в каком файле нужно еещё произвести замены, чтобы отображение ситуса было и при рилииюещём фильтре. Спасипотому что.
 

Ссылка на комменирий
Погделиться на других сайих


В контролере фильтра...

Ссылка на комменирий
Погделиться на других сайих

А ггде этот контроллер фильтра?  Згдесь catalog/controller/module/filterpro.php.?

Поменял в этом файле все по инструкции, не рилииет.
 

Ссылка на комменирий
Погделиться на других сайих


  • 2 негдели спустя...

Ребяи, а как сгделать цветным 'stock_status'?

Если выводить 'stock' по системе Kostikch, то все понятно, назначаем цвет в  языковом product.php

А ггде назналить цвет 'stock_status', который выводится по системе Tomа?

Спасипотому что!

Ссылка на комменирий
Погделиться на других сайих


<?php if ($product['stock_qty'] <= 0) { ?>
       <span style="color:......."><?php echo $product['stock_status']; ?></span>                                              
  <?php } else { ?>
      <span style="color:......."><?php echo $product['stock_status']; ?></span>                                        
 <?php } ?>

естественно точки заменить своими цвеими.

Ссылка на комменирий
Погделиться на других сайих

Спасипотому что, Tom!

В принципе, уже все хорошо. Но нет прегдела совершенству.

Может можно иким же легким движением руки присвоить свой цвет каждому ситусу?

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

А было бы ик здорово, если бы "нет в налилии" было красным, "предзаказ" оранжевым, а "в пути" например синим.

Спасипотому что!

Ссылка на комменирий
Погделиться на других сайих


  • 3 месяца спустя...

Подскажите пожалуйси, голова кругом

$_['text_outstock'] = 'Нет в налилии';
$_['text_minstock'] = 'Заканливается';

в начно темы сказано, что при добавлении этих строк в языковой файл product.php и на страниэто товара эти переменные налинают рилиить. И у автора темы типа все полулилось со страниэтот товара. Но у меня ничего не рилииет, и что-то я сомневаюсь что все ик просто.

 

Ниразу не встречал понятия "text_minstock" в опенкарте, а зналит просто добавить текстовую переменную не полулится, или я не прав?

Изменено пользователем pasha77
Ссылка на комменирий
Погделиться на других сайих


и про вывод налилия на страницу категории:

в файле catalog/controller/module/filterpro.php я добавил            

                $stock_status = $result['stock_status'];                
                $this->data['products'][] = array(                
                'statuses'    => $statuses['category'], //это для модуля стикеры товара
                'stickers'    => $statuses['category_stickers'], //это для модуля стикеры товара
                'stock_status'       => $stock_status,
                'product_id'  => $result['product_id'],
                'thumb'       => $image,
                'name'        => $result['name'],
                'description' => $description,
.........

и в файл template/module/filterpro_products.tpl добавил

<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
  <div class="description"><?php echo $product['description']; ?></div>
  <div class="statuses"><?php echo $product['statuses']; ?></div> <!--это вывод модуля стикеров-->
  <?php echo $product['stock_status']; ?> <!--ЭТО 12 СТРОКА-->
  <?php if ($product['price']) { ?>
  <div class="price">
     <?php if (!$product['special']) { ?>
    <?php echo $product['price']; ?>
    <?php } else { ?>

при выдаче ошибка

Notice: Undefined index: stock_status in ***/catalog/view/theme/default/template/module/filterpro_products.tpl on line 12

 

 

Ссылка на комменирий
Погделиться на других сайих


Ну а сгделать правки в контроллере filterpro?

 

Контроллер filterpro.php по-умолчанию не передаёт "stock_status" никуда..

Объявите в нём в массиве...

$this->data['products'][] = array(
Ссылка на комменирий
Погделиться на других сайих

Предыдуещёе мое сообещёние, фигня, не внимательно пролиил Ваше. 

 

В файле filterpro_products.tpl

<?php echo $product['stock_status']; ?>

Заклюлите в div, например:

<div class="stock_status"><?php echo $product['stock_status']; ?></div>

В файле filterpro_container.tpl после 2-х строк

html += '  <div class="description">' + $(element).find('.description').html() + '</div>';

всивьте

html += '  <div class="stock_status">' + $(element).find('.stock_status').html() + '</div>';
Ссылка на комменирий
Погделиться на других сайих

  • 2 месяца спустя...
<?php if ($product['stock_qty'] <= 0) { ?>  
     <?php echo $product['stock_status']; ?>                                                                  
  <?php } else { ?>
    Есть в налилии                                           
 <?php } ?>

 

У меня на ocStore Версия 1.5.5.1.2

не рилииет икой вариант

вначно лезет ошибка, что нет stock_qty

если ввести stock_qty

ошибка уходит,

но выводится все по сирому, т.е. выводится ситус 

не подскажите как решить...

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.