101

(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-х символов искать можно.

104

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

И как решили?

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

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

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

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

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

109

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

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

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

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

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

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

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

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

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

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

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

Можно в javascript прописать выбор первой комплектации которая есть в наличии. Пример:
----
//Устанавливаем текущую комплектацию
var photoEx = new RegExp('#(\\d+)');
var res = photoEx.exec(location.hash);
res = (res != null) ? res[1] : 0;
----

Поменять на
-----
//Устанавливаем текущую комплектацию
var photoEx = new RegExp('#(\\d+)');
var res = photoEx.exec(location.hash);
res = (res != null) ? res[1] : 0;



//Если мы открываем первый раз страницу с не установленным хэшем, то выберем первую доступную комплектацию
if (photoEx.exec(location.hash) == null){
//Для обычных комплектаций
//Выберем первую доступную комплектацию в списке
if ($('select[name="offer"] option:not(:disabled)', context).length>0){
res = $('select[name="offer"] option:not(:disabled)', context).val();
}

//Если радио кнопкой
if ($('input[name="offer"][type="radio"]:not(:disabled):first', context).length>0){
res = $('input[name="offer"][type="radio"]:not(:disabled):first', context).val();
}

//Для многомерных
if ($('.hidden_offers',context).length>0){
res = $('.hidden_offers[data-has="1"]:first',context).val();
}
}
-----

А в коде шаблона у всех input с комплектациями проверте наличие и если нет, то проставьте им атрибут disabled
Например:
-----
<input type="hidden" {if $offer.num<=0}disabled{/if}/>
----

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

121

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

 /**
     * Возвращает цену товара
     *
     * @param int|string $cost_id - id или Название цены. Если null, то текущая цена у пользователя.
     * @param integer $offer - комплектация
     * @param bool $format - форматировать цену
     * @param bool $inBaseCurrency - возвращать стоимость в базовой валюте
     * @return mixed
     * @throws DbException
     * @throws EventException
     * @throws OrmException
     * @throws RSException
     */
    function getCost($cost_id = null, $offer = null, $format = true, $inBaseCurrency = false)
{$product->getCost(null,null,false)}

122

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

Здравствуйте! На сколько я помню, акционные цены фиксируются при проведении специального документа.
Значит, при выгрузке проверять наличие товара в этом документе. Если он есть, то цена "Старая цена" должна быть заполнена ценой товара до применения скидок.

Да это нереально быстро сделать. В классической сетка grid960, а в современной Bootstrap 3. Стили координально отличаются.

Чтобы включить поддержку Эмодзи, надо подключение сменить с utf8 на utf8m4:

  self::sqlExec("SET names utf8mb4");

и поля метаданных сконвертировать из utf8 в utf8m4.

Здравствуйте! Поясните, пожалуйста, как возможно изменить данные в при импорте csv. Необходимо при импорте строки менять формат даты.

  $this->bind('csv.afterlineimport.extcsv-product');
    }
    public static function csvAfterLineImportExtcsvProduct($params)
    {
        $schema = $params['schema'];
        ....
    }

А дальше? Интересует доступ к полю dateof.