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


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

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


#671

Добрый день!

Подскажите пожалуйста, как можно программно добавить некоторый текст к заказу, таким образом, чтобы он появлялся в email (счете), который приходит клиенту после оформления заказа и также сохранялся в поле заказа, скажем как "Примечание администратора".

Спасибо!


#672

Добрый день!

Подскажите пожалуйста, как можно программно добавить некоторый текст к заказу, таким образом, чтобы он появлялся в email (счете), который приходит клиенту после оформления заказа и также сохранялся в поле заказа, скажем как "Примечание администратора".

Спасибо!

В письме отображаются примечание пользователя. Если без доработок, то только его использовать


#673

В письме отображаются примечание пользователя. Если без доработок, то только его использовать

Ок, спасибо, уже так и сделал )


#674

Добрый день.

Есть макет страницы товара (products.view).

В нем есть блок с "похожими товарами".

Как сделать, чтобы этот блок отображался только в одной категории товаров? Чтобы не перечень товаров прописывать в свойствах этого блока, а для целой категории товаров прописать, чтобы этот блок отображался.


#675

Добрый день.

Есть макет страницы товара (products.view).

В нем есть блок с "похожими товарами".

Как сделать, чтобы этот блок отображался только в одной категории товаров? Чтобы не перечень товаров прописывать в свойствах этого блока, а для целой категории товаров прописать, чтобы этот блок отображался.

Как вариант, сделать свою оболочку для блока на основе стандартной и в нее добавить условие

{if $product.main_category == '123'}
  ... СОДЕРЖИМОЕ СТАНДАРТНОЙ ОБОЛОЧКИ...
{/if}

Все оболочки лежат тут

design/themes/ТЕМА/templates/blocks/wrappers

Подсасываются автоматом после очистки кэша


#676

Как вариант, сделать свою оболочку для блока на основе стандартной и в нее добавить условие

{if $product.main_category == '123'}
  ... СОДЕРЖИМОЕ СТАНДАРТНОЙ ОБОЛОЧКИ...
{/if}

Все оболочки лежат тут

design/themes/ТЕМА/templates/blocks/wrappers

Подсасываются автоматом после очистки кэша

Большое спасибо. Получилось.

Чтобы работало не только для одной категории, а для всех подкатегорий в этой категории, немного изменил код.

{if $product.seo_path == 123}

...содержимое стандартной оболочки...

{/if}


#677

Ткните носом на функцию которая из cvs грузит title категории чтобы ее скипнуть можно было. Спасибо.

Еще был бы раз увидеть функцию которая post посылает при загрузке csv


#678

Ткните носом на функцию которая из cvs грузит title категории чтобы ее скипнуть можно было. Спасибо.


fn_exim_set_product_categories в файле app/schemas/exim/products.functions.php

Еще был бы раз увидеть функцию которая post посылает при загрузке csv


Не совсем понятно, что надо. Поясните

#679

Подскажите пожалуйста.

Есть PHP hook аддона banners.

Есть мой аддон. В хуке есть переменная $banners, которая мне нужна в tpl файле. Там список url картинок баннеров.

assign в переменную для view не срабатывает.

Как мне передать данные из PHP хука моего аддона в шаблон моего аддона? Или скиньте видео, я просмотрел все видео по php контроллерам и так и не нашел.

Как то так. Их хука не даёт не создать новую переменную, ни добавить к вытянутой из "view".

http://joxi.ru/8AnpXvNfqY74Gm

http://joxi.ru/MAjb0KefvnxDMA

http://joxi.ru/KAgPKpJhg1XDRr


#680

Подскажите пожалуйста.

Есть PHP hook аддона banners.

Есть мой аддон. В хуке есть переменная $banners, которая мне нужна в tpl файле. Там список url картинок баннеров.

assign в переменную для view не срабатывает.

Как мне передать данные из PHP хука моего аддона в шаблон моего аддона? Или скиньте видео, я просмотрел все видео по php контроллерам и так и не нашел.

Как то так. Их хука не даёт не создать новую переменную, ни добавить к вытянутой из "view".

http://joxi.ru/8AnpXvNfqY74Gm

http://joxi.ru/MAjb0KefvnxDMA

http://joxi.ru/KAgPKpJhg1XDRr

Строка 18 должна сработать, только не auth передавайте, а banners1, например