Так же можно сделать обработчик событий при изменении каталога для подсчета количества товаров в стандартное поле itemcount.

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

 {if $subdir.fields.is_virtual}
                     {$cntdir=count($subdir.fields->getVirtualDir()->getFilteredProductIds($subdir.id))}
                  {else}
                      {$cntdir=$subdir.fields.itemcount}
                  {/if}

Иногда надо в virtualdir.inc.php
добавить:

if (!empty($this->dir['virtual_data_arr']['properties'])) {
                $prop_api = new \Catalog\Model\Propertyapi();
                $prop_api->getFilteredQuery($this->dir['virtual_data_arr']['properties'], 'A', $q);            
            }
            //eventus start
              $product_api->setFilter('public', '1');
              $product_api->setFilter('num', '0', '>');
            //eventus end
            
            $q->select = 'A.id';
            $ids = $q->exec()->fetchSelected('id', 'id');

Чтобы не подсчитывались выключенные товары и товары без остатка. Или скопировать этот файл в кастомный модуль и его вызывать. Что будет правильнее.

103

(2 ответов, оставленных в Вопросы по созданию тем оформления)

Здравствуйте! Необходимы скриншоты конструктора сайта для данных страниц

Это плохо, что у нас нет сообщества разработчиков.

Polo art, я, Александр Закусило

106

(8 ответов, оставленных в Вопросы по работе с системой)

//Добавим событие в обработчик
        $eresult = EventManager::fire('deliverytype.applyextrachangediscount', array(

Только через обработчик

107

(8 ответов, оставленных в Вопросы по работе с системой)

Подскажите, как округлять стоимость доставки?  Как то 289 рублей или 173,54 копейки не очень красиво брать

108

(12 ответов, оставленных в Вопросы по работе с системой)

Скорее всего у хостера что -о. Впервые такие проблема, а магазинов уже довольно много.

Сейчас есть СЕО фильтры. Получается что то вроде site.ru/catalog/all/brand_<alias вашег обренда>/

Перестал производится полнотекстовый поиск по 4 символам. Хотя в настройках mysql минимальная длина слова стоит вообще 3.
Оказывается, в обновлениях RS

  protected function getStemmedQuery()
    {
        //Если в поисковой строке найдены кавычки,
        //не применяем эвристических методов улучшения результатов.
        //Считаем, что пользователь опытный, сам составляет запрос.
        if (strpos($this->query, "\"") !== false) return $this->query;
        
        
        $words = preg_split('/[\s,]+/u', $this->query, -1, PREG_SPLIT_NO_EMPTY);
        $stemmer = new \Search\Model\Stem\Ru();
        
        $query = $this->query;
        foreach($words as $word) {
            //Если перед словом не будет задан спец-символ, ставим + (слово обязательно должно присутствовать в результате)
            if (!preg_match('/[+\-"~(<>]/', mb_substr($word,0,1))) {
                $query = str_replace($word, '+'.$word, $query);
            }
            
            $stemmed = $stemmer->stemWord($word);
            if (mb_strlen($stemmed)>3) {//Если после стеминга слово не стало менее 4-х символов, то 
                $query = str_replace($word, $stemmed.'*', $query);
            }
        }

        return $query;
    }

Ранее было

 if (mb_strlen($stemmed)>2) {//Если после стеминга слово не стало менее 4-х символов, то 
                $query = str_replace($word, $stemmed.'*', $query);
            }

Стало:

 if (mb_strlen($stemmed)>3) {//Если после стеминга слово не стало менее 4-х символов, то 
                $query = str_replace($word, $stemmed.'*', $query);
            }

Пришлось скорректировать обратно. Поиск с 3-х букв заработал.
Я не пойму, почему даже по 4 не искало, только с 5, а сейчас с 3-х находит.
Хорошо бы в настройки вывести, потому как при маленькой базе и с 2-х символов искать можно.

111

(5 ответов, оставленных в Вопросы по работе с системой)

И как решили?

Сотни программистов писали тысячи строчек кода и десятки модулей для того, чтобы перестать использовать url c html в конце.
Поставьте модуль 301 редирект и пропишите в нем редиректы на новые страницы в RS.

Александр, отписался на почту.

4. Странно что в заказе нет выводится выбранный пользователем пункт самовывоза СДЕК.

Ошибку номера я исправил, добавив автоформирование номера заказа и символьный префикс.

Здравствуйте! Решил настроить автоматический расчет и есть парочка вопросов. Использую оформление заказа на 1 странице.
Модули CDEK, BoxBerry и почта РФ xthtp API
1. СДЕК при выборе пункта самовывоза рассчитывает стоимость, апосле нажатии на кнопку "Оформить" выводит сообщение о невозможности расчета стоимости доставки. Например, пункты в г.Нальчик.
2. При выборе г.Краснодар почта России выводит ошибку о неверном индексе. "Неверное значение параметра "Индекс места назначения" (to). значение "" не является параметром почтового объекта." причем как 350000, так и 351000.
Как это?)))
3. Боксберри
Исключение - "Вес коробки должен быть указан числом у места №1. Значение «Номер заказа в ИМ» должно быть строкой.
Исключение - "Значение «Номер заказа в ИМ» должно быть строкой.
Вторую проблему решил добавив строковый префикс к номеру заказа

116

(5 ответов, оставленных в Вопросы по работе с системой)

Еще можно DataTable использовать. Там фильтрация встроенная. Я для корзины применял. И разбиение на страницы есть

На вкус и цвет, как говорится.
Мне конструктор никогда не мешал и не мешает. Чаще всего что то быстро подредактировать, включить или выключить модули на определенных страницах через него намного быстрее.
И по cron архивируется несколько раз в день, 2 минуты развернуть на тестовом домене.

В базу, скорее всего

При оформлении заказа есть регистрация. И отдельное окно регистрации тоже есть.
Приведите скриншот, пожалуйста, со способом доставки "Доставка по Кранодару"

Какая у Вас тема?

В $params только $schema ExtCsv\Model\CsvSchema\Product. Var_dump($schema) 4500 строк выдает.
Я плюнул на это дело исправляю данные в хуке "orm.beforewrite.catalog-product"

Перепутал. И там и там надо.

В скрипте на странице оформления заказа

Здравствуйте! А тема оформления у Вас какая?

Уважаемые разработчики, сможете ответить?