Вопросы по разработке и модификации CS-Cart

products_multicolumns

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

Здравствуйте!

Не могу в документации найти ответ на следующий вопрос, подскажите пожалуйста: где задается (возможно в коде ) время отображения нотификационных сообщений? Как можно увеличить это время глобально, для всех сообщений такого типа?

К примеру в js это функция $.ceNotification() а в php fn_set_notification() с типом 'N', такое сообщение исчезает примерно через 5сек, хочу изменить на 15сек.

Спасибо!

Здравствуйте!

Не могу в документации найти ответ на следующий вопрос, подскажите пожалуйста: где задается (возможно в коде ) время отображения нотификационных сообщений? Как можно увеличить это время глобально, для всех сообщений такого типа?

К примеру в js это функция $.ceNotification() а в php fn_set_notification() с типом 'N', такое сообщение исчезает примерно через 5сек, хочу изменить на 15сек.

Спасибо!

В админке в настройке Время отображения уведомлений.

Здравствуйте, подскажите пожалуйста:

Версия мультивендор

Есть два поля:

Артикул и Артикул продавца

Артикул продавца = стандартному sku

А просто "Артикул" создан как новая настройка продукта по видеоуроку.

Как бы так сделать, чтобы поиск работал по этой настройке товара?

Здравствуйте, подскажите пожалуйста:

Версия мультивендор

Есть два поля:

Артикул и Артикул продавца

Артикул продавца = стандартному sku

А просто "Артикул" создан как новая настройка продукта по видеоуроку.

Как бы так сделать, чтобы поиск работал по этой настройке товара?

Вам нужно использовать хук additional_fields_in_search в функции fn_get_products (app/functions/fn.catalog.php)

Смотрите, как идет поиск по параметру pcode_from_q

Добрый день, коллеги. Возникла следующая задача: при добавлении товара в корзину - изменять кнопку "В корзину" на "В корзине 4 шт."

При этом возникает проблема с отображением кол-ва товаров добавленных в корзину на странице списка товаров (каталог).
Для добавления информации о товарах из корзины используется хук get_products_post либо gather_additional_products_data_post (без разницы).
В result_ids добавлено "category_products_*" данный блок возвращается, однако данные не верны.
Видимо страница уже отдается из кеша и хуки не срабатывают.
Пробовал вносить изменения в файле blocks для раздела 'products':
'disable_cache_when' => array(
'callable_handlers' => array(
array('fn_block_products_disable_cache', array('$block_data'))
),
'session_handlers' => array(
'cart.amount' => array('gt', 0)
)
)

Подскажите, пожалуйста, есть ли идеи, как брать информацию не из кеша. Спасибо большое!

В result_ids добавлено "category_products_*" данный блок возвращается, однако данные не верны.


Что значит данные не верны? Мы делали подобный функционал, кэш не трогали

Что значит данные не верны? Мы делали подобный функционал, кэш не трогали

Данные приходят с нулевым количеством товара видимо минуя бекенд отдается сохраненная штмл. Раньше тоже реализовывал подобный функционал, на более старой версии (4.3.3) без проблем, но видимо в новой версии (4.3.6) по другому работает система кеширования. Однако, если начать фильтровать товар или переключиться на другой стиль отображения товара, все работает. http://cnc.segalp.ru/instrument-dlya-snyatiya-zausencev-grattec/

Данные приходят с нулевым количеством товара видимо минуя бекенд отдается сохраненная штмл. Раньше тоже реализовывал подобный функционал, на более старой версии (4.3.3) без проблем, но видимо в новой версии (4.3.6) по другому работает система кеширования. Однако, если начать фильтровать товар или переключиться на другой стиль отображения товара, все работает. http://cnc.segalp.ru/instrument-dlya-snyatiya-zausencev-grattec/

Скорее всего проблема в том, что post запрос добавления в корзину заканчивается кодом

return array(CONTROLLER_STATUS_OK, 'checkout.cart');

Т.е. по айдишнику контент ищется в коде странице корзины, а не категории. Поэтому изменения не показываются.

Скорее всего проблема в том, что post запрос добавления в корзину заканчивается кодом

return array(CONTROLLER_STATUS_OK, 'checkout.cart');

Т.е. по айдишнику контент ищется в коде странице корзины, а не категории. Поэтому изменения не показываются.

Попробовал ради эксперимента заменить приведенный код на - return array(CONTROLLER_STATUS_OK, 'category.view?category_id=1'); - без изменений. Да и при простом обновлении страницы - с явно правильным контроллером, который содержит нужную информацию отображается нулевое кол-во.

Я все-же склонен к тому что проблема именно в кешировании, т.к. если в админке в разделе "Дизайн" - "Темы" выбрать "Обновлять кэш автоматически" - то все работает безупречно, но не хочется отказываться от кеширования полностью.

Покапавшись в директории с кешем были найдены сохраненные результаты функции get_products в директории "/var/cache/registry/" - логично предположить что от кеширования результатов при задуманном функционале придется отказаться, с помощью хука "get_products_pre" и параметра "use_caching" переведенного в false удалось отключить кеширование результатов функции. Результатов не принесло, вот это уже странно.

В какую сторону дальше копать ума не приложу

В общем покапавшись дальше нашел собственно закешированный полностью блок.

Пока сделал костыль, надеюсь есть более элегантное решение.

В файлике "/controllers/frontend/categories.pre.php"

if ($mode == 'view') {
        array_map('unlink', glob("var/cache/registry/block_content_11_37_main_40/1/*"));
}

В общем покапавшись дальше нашел собственно закешированный полностью блок.

Пока сделал костыль, надеюсь есть более элегантное решение.

В файлике "/controllers/frontend/categories.pre.php"

if ($mode == 'view') {
        array_map('unlink', glob("var/cache/registry/block_content_11_37_main_40/1/*"));
}

Это вариант работает при стандартном коде?

return array(CONTROLLER_STATUS_OK, 'checkout.cart');

Это вариант работает при стандартном коде?

return array(CONTROLLER_STATUS_OK, 'checkout.cart');

Да

Очень странная проблема:

Увидел что появляются не все фильтры в зоне покупателя.

Начал рыть. Таблица с фильтрами содержит, допустим 10 записей

При выводе всех записей в зоне покупателя, без всяких условий, показывается только часть

В админке все нормально.

Вот этот код выводит в зоне покупателя 4 записи, хотя в таблице хранится больше.

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

function fn_get_filters_products_count($params = array(), $lang_code = CART_LANGUAGE)
{
$filters111 = db_get_hash_array("SELECT * FROM ?:product_filters", "filter_id");

fn_print_r($filters111);die;

Кто нибудь, может объяснить? может это какое то кеширование о котором я не знаю...

Очень странная проблема:

Увидел что появляются не все фильтры в зоне покупателя.

Начал рыть. Таблица с фильтрами содержит, допустим 10 записей

При выводе всех записей в зоне покупателя, без всяких условий, показывается только часть

В админке все нормально.

Вот этот код выводит в зоне покупателя 4 записи, хотя в таблице хранится больше.

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

function fn_get_filters_products_count($params = array(), $lang_code = CART_LANGUAGE)
{
$filters111 = db_get_hash_array("SELECT * FROM ?:product_filters", "filter_id");

fn_print_r($filters111);die;

Кто нибудь, может объяснить? может это какое то кеширование о котором я не знаю...

Посмотрите ответ в другой теме

Доброе время суток.

Не работает загрузка файла. Пробовал "в лоб":

    Storage::instance('assets')->put('C:\xampp\htdocs\cscart\upgrades', array(
		'file' => $upload_file
	)); 

$upload_file - путь к файлу на диске (переменная не пустая - проверял)

файла в директории нет, но и никаких нотисов тоже нет, тишина :-(

Подскажите куда копать? Может ->put это не загрузка файла, хотя очень похоже?

И что такое type в function instance($type, $options = array())? Я выбрал 'assets'.

Добрый день.

Подскажите, как лучше решить задачу. Надо в одной категории на всех товарах выводить один дополнительный блок (видоизмененный блок "похожих товаров"). Таких товаров в этой категории около 75000. На всех остальных товарах во всех остальных категориях этот блок не нужен, буду выводить обычный блок "похожие товары". Этих товаров в остальных категориях будет около 50000.

Я нашел следующие способы реализации:
1. В настройках макетов, в настройках блока указать, для каких товаров его показывать. Но я предполагаю, что если ввести туда список из 75000 товаров, то и вывод страницы товара для посетителей существенно замедлится, и редактировать этот список будет сложно при добавлении/удалении товаров. Так ли это?

2. Создать новую страницу макета товаров, и для этой страницы указать список из 75000 товаров, для которых эта страница макета актуальна. Но здесь те же опасения, что и в первом пункте. Не знаю, какой из вариантов будет работать быстрее - первый или второй?

3. Создать smarty блок на странице макета товара, в котором указать, что если товар находится в заданной категории, то надо отображать новый созданный блок с "похожими товарами". Мне кажется, что в этом случае не должно быть проблем со скоростью открытия страниц товаров. Поправьте, если я ошибаюсь. Но я не смог разобраться, как с помощью smarty вывести на экран нужный блок. И возможно ли это вообще, или smarty выводит только переменные, но не может вывести готовый блок?
Я задаю в smarty блоке:
{if $product.seo_path == 1}
надо вывести блок с "похожими товарами". Подскажите, что надо тут прописать, чтобы вывести нужный мне блок, id блока 49
{else}
не надо ничего выводить
{/if}

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

Подскажите наиболее правильный способ решения исходной задачи. Если это можно сделать с помощью smarty или изменения кода движка, то подскажите код. Если только как описано в 1 и 2 пункте, то подскажите, какой лучше выбрать и будет ли заметно увеличение времени открытия страницы товара.

Спасибо.

Доброго всем дня!

Столкнулись с тем, что в модуле прайс-листы очень не хватает расширенного поиска по товарам, например, как во вкладке Товары-товары, а именно поиск по фильтрам. Скажите, это возможно реализовать своими силами, по типу скопировать код и вставить в нужное место или нужны более серьезные доработки модуля?

Доброго всем дня!

Столкнулись с тем, что в модуле прайс-листы очень не хватает расширенного поиска по товарам, например, как во вкладке Товары-товары, а именно поиск по фильтрам. Скажите, это возможно реализовать своими силами, по типу скопировать код и вставить в нужное место или нужны более серьезные доработки модуля?

app/controllers/common/products.post.php

После строки

if ($mode == 'picker') {

добавьте

    if (!fn_allowed_for('ULTIMATE:FREE')) {
        $filter_params = array(
            'get_variants' => true,
            'short' => true
        );
        list($filters) = fn_get_product_filters($filter_params);
        Tygh::$app['view']->assign('filter_items', $filters);
        unset($filters);
    }

app/controllers/common/products.post.php

После строки

if ($mode == 'picker') {

добавьте

    if (!fn_allowed_for('ULTIMATE:FREE')) {
        $filter_params = array(
            'get_variants' => true,
            'short' => true
        );
        list($filters) = fn_get_product_filters($filter_params);
        Tygh::$app['view']->assign('filter_items', $filters);
        unset($filters);
    }

Большое спасибо за оперативную помощь :-)