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

Добрый день! Ребята подскажите пожалуйста куда и какой код внести в CommerceML что бы при выгрузке в папке exim удалялась файлы import и offers и создавались новые

Предполагаю что тут но куда что внести…
app>addons>rus_exim_1c>Tygh>Commerceml>RusEximCommerceml.php

@ecomlabs, прошу помощи! Нет сил уже биться… модуль подготовил, всё равно шаблон не отображаеться на витрине! Как только не пытался, всё бестолку. Какой то сюр.
Работаю со $schema + функцией

Упрощенный модуль прилагаю, без языковых перменных. Но не в них дело. Добавляю в админке шаблон по всем заветам инструкций, видеоурокам, личному опыту и примерам из самого cscart. - это работает. Кеширование отключено 100%, лишние модули отключены, удяляю содержимое папки cache, захожу на витрину. И… моего блока нет, совсем. Чудиса.
Спасибо.

з.ы.
могли бы поговорить в slack если что…sorted_brands.zip (7,0 КБ)

Замените в схеме

'brands' => array(

на

'items' => array(

и в функции

return $vars;

на

return [$vars, []];

2 лайка

Получилось, спасибо, коллега!

Но почему так?! Удивлен конечно… по большей части этим: return [$vars, []];
Гляну кончено же в код существующих модулей…

Все функции, которые что-то достают для блоков возвращают, как правило, два массива - это массив с результатами и массив с параметрами поиска.

А items просто зарезервирована, оттуда берется название функции, которую необходимо вызвать

Добрый день! Как настроить отображение Формат SEO URL товаров вида: /subcategory-name/product-name/
Скрин приложил.

Без доработки кода модуля SEO - никак

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

Мы можем доработать модуль SEO под ваши требования, для этого напишите нам, пожалуйста, ваш запрос на sales@cart-power.com и мы оценим работы.

С уважением,
Cart-Power

Всем доброго дня!

У меня задача автоматически скриптом менять главную вариацию по определённой логике. Нашёл функцию setDefaultProduct класса Sevice в модуле product_variations, тут:
/app/addons/product_variations/src/Service.php

Скприпт у меня лежит в корне. Как подключить файлы модуля, чтобы я мог использовать эту функцию в своём скрипте?

если делаю скриптом - подключаю так

<?php 
use Tygh\Registry;
define('AREA', 'A');
define('ACCOUNT_TYPE', 'admin');
require(DIR_ROOT .  '/init.php');

function avp_403 ($messag)
{
    @header('HTTP/1.0 403 Forbidden'); 
    die("\n" . 'Hacking attempt: ' . $messag);
}

function avp_auth_check()
{
    if (!isset($_REQUEST['api_admin']) || !isset($_REQUEST['admin_pass']) || !isset($_REQUEST['api_key'])) { avp_403("missing options"); }
    $result = db_get_array("SELECT user_id, password, api_key FROM ?:users WHERE email = ?s AND user_type = 'A' AND status = 'A'", $_REQUEST['api_admin']);
    $num_rows = db_get_found_rows();
    if ($num_rows == 0) { avp_403("missing user"); }
    if (
        (md5($_REQUEST['admin_pass']) != $result[0]['password'])
//         || 
//        (md5($_REQUEST['api_key']) != $result[0]['api_key'])
    ) { avp_403("missing access"); }
}

avp_auth_check();

avp_auth_check - чтобы никто со стороны не мог запустить скрипт.
Если предполагается запуск только по крону - достаточно проверки на консольный запуск.

И да, здесь не важно, где лежит скрипт - в корне или в какой другой папке. Если для запуска из консоли - лежать может хоть вне DIR_ROOT

1 лайк

Спасибо!

Правда я имел в виду как использовать метод, описанный в классе Service модуля. В итоге выяснил, что вот так:

Tygh::$app[‘addons.product_variations.service’]->setDefaultProduct( $group_id, $product_id);

Смотрел видеоуроки, но столкнулся с проблемой что при заливке одно видео повторяется и мне нужно конкретно # 4.2 CS-Cart: Создание новой настройки товара ч.2 (отображение в карточке товара).
оно просто повторяет предыдущий урок… Помогите, пожалуйста, если у кого-то есть.

Здравствуйте, это оно? 7. Добавим новую настройку для товара. Часть 2 — Документация docs.cs-cart.ru 4.2.x

Еще есть и тут 4.2 CS-Cart Multi-Vendor: Товары — Категории товаров. Часть 2 - YouTube

Раньше было удобно смотреть уроки, особенно когда объяснял Даниил Баженов, сейчас все чаще натыкаюсь на писклявый голос девушки :grinning: которая показывает все в ускоренном виде )

к сожалению это не то… я добавил новое поле в админке для товара и оно сохраняется в базу данных… мне нужно понимать как оно выводится на страницы магазина… там к сожалению это пропущено из-за того что задублировалось видео. Мне как раз видео Баженова и нужно )

У меня раньше были все их видео от и до, все скачал, жесткий накрылся! Ждите сейчас форумчани помогут сделать вам и без видео, направят что и куда.

Здравствуйте, хотел бы попросить помощи в разработке “вариаций товара”, не получается вывести цену для определенной вариации, переменную вроде бы нашёл, но не сработало.
P.S Помощь с вашей стороны может быть оплачена.

Вам нужно настроить модуль вариаций и собрать группу вариаций, в дальше посмотреть

Модуль “Вариации товаров” есть у вас? Вы создаете три товара к примеру, и у каждого товара своя цена и после это все добро собираете в вариацию.

Привет!
Такая ситуация, хотел добавить уведомляху после добавления в корзину товара, пишут использовать my_changes модуль checkout.post.php, создал, модуль включен, пути корректные (частично работает, об этом ниже), кэш чищу.

Подключил, понял что работает на странице чекаута конкретно, а при вызове checkout.add по кнопке add-to-cart из каталога или главной, мод не срабатывает

Хотя именно он там должен срабатывать, вот судя по ответам по форуму и скрин из DOM приложил, там тоже видно…

Спойлер

После условия mode == add не работает, а точнее даже начиная cо строчки с условием при запросе POST.
Код позаимствован у уважаемого eComLabs c сайта SO

сheckout.post.php и сheckout.pre.php
echo "<script>console.log('Тут еще работает 1')</script>";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
    echo "<script>console.log('Тут уже не работает 2')</script>";
  if ($mode == 'add') {
    echo "<script>console.log('my_changes 3')</script>";
      $added_products = Registry::get('view')->getTemplateVars('added_products');
      if (!empty($added_products)) {
        foreach ($added_products as $data) {
          if (!empty($data['product_id']) && $data['product_id'] == THE_ID_OF_REQUIRED_PRODUCT) {
             $msg = Registry::get('view')->fetch('addons/my_changes/custom_product_notification.tpl');
             fn_set_notification('I', __('custom_product_notification_title'), $msg, 'I');
          }
        }
      }
  }
  return;
}

После этого нашел тему, где сказали изменить в config.local.php параметр ‘disable_dhtml’ => false и ‘redirect_to_cart’ => false, редирект мне не требовался, однако и с ним и без него появилась другая проблема, но так же и успех определенный.

Наконец-то начали отрабатывать консоль логи описанные выше, плюс ко всему те, которые прописаны в checkout.PRE.php (код такой же как и у checkout.post.php) и оставленные там случайно после теста.
Однако после параметра ‘disable_dhtml’ => false падает сайт при добавлении в корзину c главной или категории с ошибкой, но зато в консоли перед падением видно все три дебажных строки.
Ошибка:

Спойлер

Pimple\Exception\UnknownIdentifierException

Message

Identifier “ajax” is not defined.

Error at

app/lib/vendor/pimple/pimple/src/Pimple/Container.php, line: 105

Backtrace

File: app/Tygh/Application.php
Line: 135
Function: offsetGet
File: app/controllers/frontend/checkout.php
Line: 63
Function: offsetGet
File: app/functions/fn.control.php
Line: 722
Function: include
File: app/functions/fn.control.php
Line: 458
Function: fn_run_controller
File: index.php
Line: 19
Function: fn_dispatch

Помогите разобраться, пожалуйста