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


#651

products_multicolumns

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


#652

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

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

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

Спасибо!


#653

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

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

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

Спасибо!

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


#654

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

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

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

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

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

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

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


#655

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

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

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

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

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

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

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

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

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


#656

Добрый день, коллеги. Возникла следующая задача: при добавлении товара в корзину - изменять кнопку "В корзину" на "В корзине 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)
)
)

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


#657

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


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

#658

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

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


#659

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

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

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

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


#660

Скорее всего проблема в том, что 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 удалось отключить кеширование результатов функции. Результатов не принесло, вот это уже странно.

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


#661

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

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

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

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

#662

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

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

В файлике "/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');

#663

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

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

Да


#664

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

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

Начал рыть. Таблица с фильтрами содержит, допустим 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;

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


#665

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

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

Начал рыть. Таблица с фильтрами содержит, допустим 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;

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

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


#666

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

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

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

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

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

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

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


#667

Добрый день.

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

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

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

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

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

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

Спасибо.


#668

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

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


#669

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

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

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);
    }

#670

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);
    }

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