-
Публікації
31 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем nashivan
-
-
Например есть шаблон language.twig, он выводится в шапке через header.twig : {{ language }}
Мне нужно создать language_mobile.twig
Я создал файл language_mobile.twig, в header.twig прописал {{ language_mobile }} в контролерах добавил файл language_mobile.php, скопировал код из language.php, вставил в language_mobile.php и поменял только эту строку:
return $this->load->view('common/language', $data);
на
return $this->load->view('common/language_mobile', $data);
Но на сайте изменения не отображаются. Что я делаю не так, что я упустил?
-
У писавшего ТЗ когнитивный диссонанс? Товар должен быть во всех родительских категориях - но товар должен быть только в одной категории?
товар должен просто выводится на страницах основной категории, но при этом состоять только в одной категории
Sent from my iPhone using Tapatalk -
Здравствуйте! А если просто в настройках товара в админке во вкладке Связи указать категории, в которых нужно отображать товар? Стандартный функционал и никаких модификаторов и доп. модулей не надо!
товар должен быть только в одной категории, так написано в тз
Sent from my iPhone using Tapatalk -
поставил бесплатный модуль seopro от opencart3x и все заработало
Sent from my iPhone using Tapatalk -
Установлен opencart russia 3.0.3.8. php 7.3
Есть структура каталога:
Каталог > Категория > Подкатегория
В Подкатегории лежит Товар1
Мне необходимо сделать, чтобы Товар1 выводился не только в Подкатегории, но и в Категории
Я нашел простой модификатор, который позволяет сделать это:
Спойлер<file path="catalog/controller/product/category.php">
<operation>
<search><![CDATA[
'filter_category_id' => $category_id,
]]></search>
<add position="after"><![CDATA[
'filter_sub_category' => true,
]]></add>
</operation>
</file>Теперь товар выводится и в основной категории, но url товара изменился
Был:
https://website.com/katalog/category/sub-category/product1 - если кликнуть на товар из подкатегории
Стал:
https://website.com/katalog/category/product1 - если кликнуть на товар из основной категории.
Проблема: если перейти из Основной Категории на страницу с Товаром1, то будет ошибка: Товар не найден!
Если перейти на Товар1 из Подкатегории, то ошибки не будет.
Вопрос: как правильно сделать так, чтобы Товар1 из Подкатегории выводился в Основной Категории, но при этом не менял свой url и оставался:
https://website.com/katalog/category/sub-category/product1
Заранее спасибо за ответ!
-
3 минуты назад, neonox сказал:
max-age в cache-control
это в .htaccess ?
-
32 минуты назад, nikifalex сказал:
нет, нельзя. Но можно сменить процесс разработки.
Т.е. ну уберите модификаторы, либо меняйте в modification а потом переносите ваши доработки.
хорошо, еще один вопрос, чтобы применились изменения css нужно прожать ctrl+f5 в браузере и они появляются. как быть обычным пользователям? они же не делают жесткую очистку кеша и изменения у них не появляются.
-
Я делаю изменения в файле header.twig, но после этого мне нужно в ручную обновить модификации в админке, чтобы изменения применились. Если я изменяю файлы css, то мне не нужно этого делать. Можно ли как-то сделать автоматическое обновление модификаций, чтобы постоянно не отвлекаться?
opencart 3x
-
Есть размерная сетка на opencart 2.3, ее нужно повторить но уже на opencart 3:
на двойке она сделана на чистом php в tpl файле (product.tpl), но opencart 3 поддерживает только twig формат, поэтому скопировать просто php код на тройку не получится (product.twig)
Вот код на opencart 2.3:
<table> <?php $s1 = array(); $s2 = array(); $arr = array(); foreach ($option['product_option_value'] as $option_value) { list($a, $b) = explode("x", $option_value['name']); $s1[] = intval($a); $s2[] = intval($b); $arr[intval($a)][] = array(intval($b), $option_value['product_option_value_id']); } $id = $option['product_option_id']; $s1 = array_unique($s1); rsort($s1); $s2 = array_unique($s2); sort($s2); foreach ($s1 as &$value) { echo "<tr>"; echo "<td>".$value."</td>"; foreach ($s2 as &$value2) { echo "<td>"; $p = false; foreach ($arr[$value] as &$value3) { if($value3[0] == $value2){ $p = true; $val = $value3[1]; } } if ($p) { echo "<label><input type='radio' name='option[".$id."][]' value='".$val."' required /><span class='stock' val='".$val."' name ='".$value."x".$value2."' vid='".$id."'></span></label>"; } else{ echo "<span class='out-stock'></span>"; } echo "</td>"; } echo "</tr>"; } echo "<tr><td></td>"; foreach ($s2 as &$value) { echo "<td>".$value."</td>"; } echo "</tr>"; ?> </table>
В админке опции прописаны вот так: 170x52, 170x54, 170x60, 176x52, 176x54, 176x60, 182x52, 182x54, 182x60 (пример)
Пытался воспользоваться онлайн сервисом http://phptotwig.com/ , но выдает ошибку на строке с explode
Пытался адаптировать сам этот код под твиг, но опыта в этом мало, вот что получилось:
<table> <tbody> {% for option_value in option.product_option_value %} <tr> <td>{{ option_value.name | split('x', 2)[0] }}</td> <td><label><input type="radio" name="option[{{ option.product_option_id }}][]" value="{{ option_value.product_option_value_id }}" required=""><span class="stock" val="{{ option_value.product_option_value_id }}" name="{{ option_value.name }}" vid="402"></span></label></td> </tr> {% endfor %} <tr> <td></td> {% for option_value in option.product_option_value %} <td>{{ option_value.name | split('x', 2)[1] }}</td> {% endfor %} </tr> </tbody> </table>
Может есть модуль для такой сетки? Или лучше уже допилить код? Подскажите, пожалуйста, в какую сторону нужно копать.
-
Нашел на форуме, работает
-
Копирую в контролере по принципу как и у product.php в category.php
После:
if ($this->config->get('config_tax')) { $tax = $this->currency->format($tax_price, $this->session->data['currency']); } else { $tax = false; }
Это:
$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']) ); }
Летят нотисы:
Как вывести скидки в opencart 3 на страницу категории? Может кто-то сталкивался с этим?
-
12 минут назад, fanatic сказал:
так вот же
$product_total = $this->model_catalog_product->getTotalProducts($filter_data);
спасибо, добавил в контроллер
$data['products_all'] = $this->model_catalog_product->getTotalProducts($filter_data);
и вывел в шаблон, все работает
-
Как получить число найденных товаров?
-
что-то не так? все работает у меня
-
2 минуты назад, fanatic сказал:
в базе, создали поле?
через phpmyadmin в ручную добавил
-
честно, думал, что до моей проблемы с этим кто-то уже сталкивался.
если будет время до запилю простой ocmod и выложу сюда
-
В admin/view/template/catalog/product_form.tpl
после:
html += ' <td class="text-right"><input type="text" name="product_discount[' + discount_row + '][price]" value="" placeholder="<?php echo $entry_price; ?>" class="form-control" /></td>';
этоhtml += ' <td class="text-right"><input type="text" name="product_discount[' + discount_row + '][price2]" value="" placeholder="<?php echo $entry_price; ?>" class="form-control" /></td>';
Все работает, всем спасибо)
-
-
в catalog/controller/product/product.php
после
'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']),
это
'price2' => $this->currency->format($this->tax->calculate($discount['price2'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']),
теперь выводит
-
-
-
17 минут назад, Tom сказал:
Так вы расскажите , что вы уже сделали. Будет проще дать советы.
Или вам нужно что бы кто то расписал вам как выполнить такую не стандартную фишку в магазине?
Вот, что я сделал
В admin/view/template/catalog/product_form.tpl
после
<td class="text-right"><?php echo $entry_price; ?></td>
это
<td class="text-right">Старая цена</td>
после
<td class="text-right"><input type="text" name="product_discount[<?php echo $discount_row; ?>][price]" value="<?php echo $product_discount['price']; ?>" placeholder="<?php echo $entry_price; ?>" class="form-control" /></td>
это
<td class="text-right"><input type="text" name="product_discount[<?php echo $discount_row; ?>][price2]" value="<?php echo $product_discount['price2']; ?>" placeholder="<?php echo $entry_price; ?>" class="form-control" /></td>
В admin/controller/catalog/product.php
после
'price' => $product_discount['price'],
это
'price2' => $product_discount['price2'],
В /admin/model/catalog/product.php
вместо (57 строка):
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
это
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', price2 = '" . (float)$product_discount['price2'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
вместо (196 строка):
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
это
$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', price2 = '" . (float)$product_discount['price2'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");
в tpl вывести <?php echo $discount['price2']; ?>
ocstore 2.3
-
8 минут назад, Tom сказал:
Странное довольно желание. Толку от этих зачеркнутых цен.
Тем более что акция у основной цены , как на скрине и так есть в опенкарт.
желание странное, согласен, но все таки, интересно было бы, как это реализовать можно
-
7 минут назад, Tom сказал:
Тем более что акция у основной цены , как на скрине и так есть в опенкарт.
верно, только эти выводить получается
Как добавить новый файл twig и подключить его в header.twig
в Twig
Опубліковано:
добавил в header.twig эту строку и заработало!
$data['language_mobile'] = $this->load->controller('common/language_mobile');