petyann
-
Публікації
46 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем petyann
-
-
Как сделать неактивной в ЗАКЛАДКАХ кнопку "Купить", если товара нет в наличии? (В карточке товара и в категориях всё получилось, но вот с закладками возникла заминка.)
(Стоит модуль для добавления в закладки без регистрации)
В контроллере (account/wishlist) прописал так:
$data['stock_quantity'] = $product_info['quantity']; $data['text_out_of_stock'] = $product_info['stock_status'];
Там же, в разделе $data['products'][] = array(
'quantity' => $result['quantity'], 'text_out_of_stock' => $result['stock_status'],
В wishlist.twig вместо кнопки "Купить" прописал:
{% if product.stock_quantity < 1 %} <button type="button" id="button-outstock" disabled="disabled" class="btn btn-primary btn-lg btn-block out_of_stock"><i class="fa fa-ban out_of_stock_color"></i> {{ text_out_of_stock }}</button> {% else %} <button type="button" id="button-cart" data-loading-text="{{ text_loading }}" class="btn btn-primary btn-lg btn-block">{{ button_cart }}</button> {% endif %}
Но теперь абсолютно все кнопки, даже у тех товаров, которые в наличии, стали неактивными с надписью (text_out_of_stock) "Нет в наличии". То есть, похоже, что массив stock_quantity не создался, что ли? В чём тут ошибка?
-
15 минут назад, Tom сказал:
Погуглить тогда сразу и эту ошибку.
С этой через .htaccess разобрался.
-
6 часов назад, Tom сказал:
Нет.
Его и не только ,нужно ставить имея хотя бы минимальный набор знаний работы с опенкарт. Если их нет, думаю из вас не выйдет так же ничего в стоматологии, космонавтике или балете (без знаний в каждой перечисленной области).
По сути вопроса : на хостинге, видимо какой то мега дешёвый тариф, ничего в себя не включающий. Пишите напрямую в тех поддержку, что нужно помочь с данными проблемами и за одно привести им список ошибок и предупреждений.
Минимальный набор знаний и программирования вполне имеется. Хостинг вроде да, не сильно дорогой, просто привык к нему, уж порядка 15 лет его использую. Не ожидал, что там ionCube не подключен.
-
6 часов назад, Tom сказал:
В закладки, в опенкарт можно добавить только авторизованным покупателям....
Вы за эти три хотелки, отвалите денег больше, чем купите это вместе с готовым шаблоном, где всё это уже есть...
В этом например
Его с нуля ставить надо? Поставил поверх своего сайта (который с дефолтным шаблоном). Выдаёт пустую страницу. При попытке включить настройки шаблона выдаёт:
Attention! Increase the "max_input_vars parameter" in your hosting settings to 2000
Attention! Increase the "max_input_vars parameter" in your hosting settings to 2000Site error: the ionCube PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking. Please visit get-loader.ioncube.com for install assistance.
-
Подскажите модуль для изменения стиля кнопок "В закладки" и "Сравнение" после нажатия. То есть чтобы нажать на сердечко "В закладки", и оно стало, например, красным и добавилось в закладки, а если нажать ещё раз, то всё обратно сбросилось. (Ну и со сравнением так же).
-
При добавлении товара в корзину, закладки или в сравнение сами кнопки никаким образом не меняются (остаётся тот же текст и цвет), то есть даже не понятно, добавлен этот товар куда-либо, или нет.
Можно ли как-то при добавлении заказа в корзину, закладки или в сравнение менять, например, цвет текста (чтобы, например, при добавлении в закладки сердечко становилось красным)? Ну или у кнопки "Купить", например, поменять текст на "В корзине"?
-
У меня, почему-то, по этому же самому мануалу вообще ничего не выводится. Версия Opencart 3.0.3.8. И модификаторы обновлял, и кэш отключил, и всё равно никак.
У вас сразу выводиться стало?
-
Как добавить Сравнение товаров в самое верхнее меню (там, где Личный кабинет, Закладки, Корзина и т.д.)?
Скопировал из category.php в header.php строки:
$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
$data['compare'] = $this->url->link('product/compare');Скопировал из category.twig в верхнюю строчку header.twig следующую строку:
<a href="{{ compare }}" id="compare-total" class="btn btn-link">{{ text_compare }}</a>
Но не работает. Если нет товаров в сравнении, то показывает символ %, если есть то показывает их количество, но, при нажатии перебрасывает на главную страницу. Кроме того, ещё и стандартное сравнение перестаёт работать.
-
27 минут назад, Prooksius сказал:
у вас магазин стоит не в корне домена?..
Если все работает, просто перенесите папку в нужное место и измените config.php в корне и в папке admin соответственно измененному пути.Огромное спасибо! Так всё получилось!
-
Как перенести магазин на Opencart из одной директории домена в другую директорию этого же домена? Не на другой хостинг, а именно из одной директории домена в другую директорию этого же домена.
Сейчас он располагается по адресу вида mysite.ru/ok/
Необходимо перенести его в корневой каталог, чтобы он располагался сразу по адресу mysite.ru
Возможно ли это и насколько это сложно?
(Не в ту тему написал)
-
1 час назад, Prooksius сказал:
Если немного товаров и атрибутов, не будет тормозить, тогда вот так можно.
В запросе в модели getProducts добавить через запятую в основной SELECT еще одно "поле" - вложенный SELECT:
(SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr
<ваш attribute_id> = 89
и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту.
Ну и в контроллере добавить в выпадающее эту сортировку по полю "your_attr" (без p)Спасибо большое.
-
14 минут назад, spectre сказал:
вам нужно сделать скрипт который будет копировать значения атрибута в какое-то поле в товаре существующее или создать новое - а уже потом сортировать по нему
таблицу атрибутов дергать это больновато
Если сделать через новый столбец в самой базе данных (ввести их даже вручную) и по нему сортировать, то это не проблема. Просто думал, что можно как-то проще подключить oc_product_attribute и сортировать через attribute_id.
-
5 минут назад, Dimasscus сказал:
Вы сначала обьясните как вы сортировку по атрибуту себе представили. У этого атрибута какие значения?
У этого атрибута целые числовые: 7, 9, 12, 55, 75, 100, 200.
-
Стоит Стоит Opencart 3.0.3.8 (rs.2).
Подскажите, как можно вывести сортировку по атрибуту товара?
Атрибуты, как я понимаю, находятся в базе данных в таблице oc_product_attribute.
Нужный attribute_id, по которому требуется сделать сортировку — 89.
Я так понимаю, что в где-то в файле ok/catalog/model/catalog/product.php нужно что-то сделать? Но что и как?
-
51 минуту назад, Prooksius сказал:
Если перевести на русский вот эту вот конструкцию, то получается, что если у товара есть акционная цена, то надо сортировать по ней. Если скидочная есть - то по ней, а если нет ни той ни другой - то только тогда по мощности.
У вас работает только потому что у товаров нет акционных и скидочных цен.
А подсчет количества при такой сортировке, подозреваю что и не работает вовсе...
Создаете себе же жуткую головную боль. Дайте кому нибудь денежку, вам сделают правильно.Акционных и скидочных цен там точно не будет. В фильтре товаров (модуль okFilter) количество правильно считает. Но, всё же, желательно сделать правильно. Не подскажете, какой код будет корректным в данном случае?
Попробовал вместо строки
ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.power END)
написать вот так:
$sql .= " ORDER BY p.power";
Вроде тоже работает.
-
1 час назад, vvo сказал:
<operation>
<search index="0"><![CDATA[$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";]]></search>
<add position="replace"><![CDATA[
$sql .= " ORDER BY p.quantity<1, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} elseif ($data['sort'] == 'p.date_added') {$sql .= " ORDER BY p.quantity<1, p.date_added";
]]></add>
</operation>сам код в оригинале такой же
p.quantity<1 если не нужно можете убрать, это не если нет товара, p.date_added замените на p.power и пробуйте
Спасибо, похоже заработало.
Если кому пригодится, то, помимо вышеизложенного, в catalog/model/catalog/product.php добавил код (красным цветом):
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} elseif ($data['sort'] == 'p.power') {
$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.power END)";
}
else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
} -
1 час назад, vvo сказал:
Видимо один маленький шаг не доделали.
Посмотрите по аналогии:
catalog/model/catalog/product.php
$sort_data = array(
'pd.name',
'p.model',
'p.quantity',
'p.viewed',
'p.price',
'rating',
'p.sort_order',
'p.date_added'
);if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY p.quantity<1, LCASE(" . $data['sort'] . ") ";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY p.quantity<1, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} elseif ($data['sort'] == 'p.date_added') {$sql .= " ORDER BY p.quantity<1, p.date_added";А там два похожих кода:
$sort_data = array( 'pd.name', 'p.model', 'p.quantity', 'p.price', 'rating', 'p.sort_order', 'p.date_added', 'p.power' ); if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; }
и
$sort_data = array( 'pd.name', 'p.model', 'ps.price', 'rating', 'p.sort_order' ); if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; }
Я так понимаю, что менять надо в первом. Но вот немного не соображу, как правильно именно в таком коде всё прописать и, главное — как правильно.
-
Стоит Opencart 3.0.3.8 (rs.2).
Как добавить новый элемент сортировки на страницу категорий, помимо тех, что есть по умолчанию?
Нужно добавить сортировку товаров по мощности.
В базе данных (phpMyAdmin) в таблицу oc_product (думаю, что именно в неё нужно) добавил новый параметр "power".
В файле catalog/language/ru-ru/product/category.php прописал:
$_['text_power_asc'] = 'Мощность (низкая > высокая)'; $_['text_power_desc'] = 'Мощность (высокая > низкая)';
В файле catalog/controller/product/category.php прописал:
$data['sorts'][] = array( 'text' => $this->language->get('text_power_asc'), 'value' => 'p.power-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.power&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_power_desc'), 'value' => 'p.power-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.power&order=DESC' . $url) );
В сортировке добавились пункты "Мощность (низкая > высокая)" и "Мощность (высокая > низкая)", но сортировка по ним не работает.
Полагаю, что нужно добавить параметр p.power (или что-то вроде того) в переменную $sql, но не совсем понимаю, где и как это сделать, и, видимо, нужен ещё какой то код, чтобы сортировка заработала.
Можете подсказать более подробно, как это сделать?
Как сделать неактивной в ЗАКЛАДКАХ кнопку "Купить", если товара нет в наличии?
в Opencart 3.x: Загальні питання
Опубліковано:
Неа. Тоже пробовал, не работает. Всё равно у товаров, которые есть в наличии, показывается как "Нет в наличии". То есть значение product.quantity, видимо, не существует.