admin пишет:

Если у вас у одного товара в мм, а у другого в см, значит нужно все либо привести к сантиметрам(дробные значения), либо все привести к миллиметрам.

мне то это понятно, а вот пользователям - нет: никаких уведомлений о несоответствиях они не получают. Было бы логично если настройка "Единица измерения габаритов товаров." жестко фиксировала единицы измерения у соответствующих хар-к

        
$volume = 0.0;
$products = $order->getCart()->getCartItemsByType(Cart::TYPE_PRODUCT);
foreach($products as $product) {
     $dimensions = new ProductDimensions(new Product($product->entity_id));
     $volume += $dimensions->getVolume() * $product->amount;
}

Я правильно понимаю, что объем товаров в заказе вычисляется примерно так?
Это самый простой вариант?
А как быть если у товаров разная размерность? т.е. у одного в мм, а у другого в см?

Ярослав пишет:

В версии на текущую дату public есть, но нет его в транслитерации. Забыли видимо

о каком public'е Вы все пишите?

Ярослав пишет:

1. В исходном коде этого не было

качественно перенесли старые баги!

Ярослав пишет:

3. Методов не хватает, так как делалось для старой версии 3, там их нет.

Вы бы хоть написали об этом, а то кто-то на радостях скачает и радости не ощутит smile

Я писал подобный модуль для другой смс. У Инстаграмм довольно много ограничений, в данном случае правельнее будет сказать так: не стоит заходить в аккаунт с других устройств во время работы модуля.

1. почему после транслитерации запроса пропал setFilter('public', 1) ?
2. чем setFilter('name', "$query%", 'like') от setFilter('name', $query, '%like%') отличается? почему такой синтаксис?
3. удаление методов getSearchQueryProductResults, getSearchQueryProductCount ломает обратную совместимость и может привести к проблемам в сторонних модулях.

У меня получился вот такой вариант:

public function getSearchQueryCategoryResults($query, $limit = 1)
{
    $list = $this->dirapi
                 ->setFilter('name', $query, 'like%')
                 ->setFilter('public', 1)
                 ->getList(1, $limit);
    $limit -= count($list);
    
    if ($limit) {
        $list2 = $this->dirapi
                      ->clearFilter()
                      ->setFilter('id', $this->getIds($list), 'notin')
                      ->setFilter('name', $query, '%like%')
                      ->setFilter('public', 1)
                      ->getList(1, $limit);
        $list = array_merge($list, $list2);
        $limit -= count($list2);
    }
    
    // Если не нашли результаты, то посмотрим с транслитом
    if ($limit) {
        $query = Transliteration::puntoSwitchWord($query);
        $list2 = $this->dirapi
                      ->clearFilter()
                      ->setFilter('id', $this->getIds($list), 'notin')
                      ->setFilter('name', $query, 'like%')
                      ->setFilter('public', 1)
                      ->getList(1, $limit);
        $list = array_merge($list, $list2);
        $limit -= count($list2);
        
        if ($limit) {
            $list2 = $this->dirapi
                          ->clearFilter()
                          ->setFilter('id', $this->getIds($list), 'notin')
                          ->setFilter('name', $query, '%like%')
                          ->setFilter('public', 1)
                          ->getList(1, $limit);
            $list = array_merge($list, $list2);
        }
    }
    return $list;
}

6

(16 ответов, оставленных в Предложения по улучшению системы)

Polo Art пишет:

Да лан, че спорить, мяч на стороне разработчиков.

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

Подскажите как лучше реализовать контроллер для бекенда c экшенами реализующими: список файлов, открытие и удаление файлов.
По идее нужен урезанный функционал RS\Controller\Admin\Crud, но, как я понял, этот класс завязан на работу с БД? Или есть ORM модели для динамически формируемых данных?

Есть ли документация?

  • по созданию контроллеров наследующих RS\Controller\Admin\Front? Или хотя бы примеры их реализации.
    по CSS/JS для бекенда кроме https://readyscript.ru/dev-manual/dev_a … rmats.html
    по структуре данных возвращаемой хуком getmenus - список полей и возможных значений

8

(16 ответов, оставленных в Предложения по улучшению системы)

Раскидывать же htaccess по директориям - за это по рукам били ещё лет так 15 назад. Потому что потом не знаешь, где что и откуда.

Я предложил данный вариант т.к. он используется в RS  (RS\File\Tools::makePrivateDir и RS\Helper\Log).

Polo Art пишет:

и про nginx - для него конфиг в факе есть, и конфиг очень даже махонький.

если речь о https://readyscript.ru/faq/#faq-rewrite то, он видимо устарел т.к. не соотносится с .htaccess

9

(16 ответов, оставленных в Предложения по улучшению системы)

Polo Art пишет:

добавьте сюда .tmp

у кеш файлов нет расширений, да и про логи забыли

Polo Art пишет:

Не надо никаких htaccess внутри вложенных каталогов.
БезопасТность следует реализовать на уровне разработчиков, т.е. предлагать в стоке уже прокачанный htaccess и нехай он в корне у всех новых ридискриптов лежит, в чём тут проблема-то?

как я уже писал, главное прикрыть доступ, конечная реализация для меня роли не играет

Polo Art пишет:

Нафиг он нужен-то в эпоху vps за два бакса и nginx?

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

10

(16 ответов, оставленных в Предложения по улучшению системы)

Закусило Александр пишет:

Ну а как вы предлагаете добавлять эти файлы .htaccess через интерфейс RS?

зачем добавлять их через интерфейс RS? Особых изысков не требуется: если опция активна создаем в cache и logs .htaccess файлы блокирующие доступ к логам и системному кешу, нет - удаляем/переименовываем .htaccess.

"/cache/engine/.htaccess", "/logs/.htaccess" содержащие "Deny from all".

11

(16 ответов, оставленных в Предложения по улучшению системы)

Закусило Александр пишет:

Потому, что полноценного файлового менеджера у нас внутри нет. Он действует только в рамках шаблонов.

А какая между ними связь?

12

(16 ответов, оставленных в Предложения по улучшению системы)

admin пишет:

Всю папку /cache/ нельзя закрывать, так как в ней еще находятся сжатые css и js (при включении соответствующей опции).

А вот папку cache/engine - закрыть нужно.
Можно добавить в корневой .htaccess строку:

RewriteRule ^cache/engine/ - [R=403,NC,L]

почему не реализовать это на уровне CMS? хотя бы опционально.

13

(16 ответов, оставленных в Предложения по улучшению системы)

Ярослав пишет:

Ваши предложения?

озвучено в первом посте

14

(16 ответов, оставленных в Предложения по улучшению системы)

Polo Art пишет:

В стандартном htaccess в корне.
#Запрещаем открывать файлы напрямую
<Files ~ "(\.inc\.php|\.tpl|\.tpl\.php|\.auto\.php|\.auto\.xml)$">
    Order allow,deny
    Deny from all
</Files>

святая наивность

admin пишет:

Это не баг (ничего не ломает)

IDE ругается

16

(16 ответов, оставленных в Предложения по улучшению системы)

.htaccess

Deny from all

для папок cache и logs.

admin пишет:

1. Не смог найти информацию о том, что отсутствие public перед функцией дает notice.

Сейчас не могу найти, но точно помню что в одном из последнем релизов в strict modе попадалось.

2. Так исторически сложилось.

Это не баг, а фича?

Но в наследнике все равно всегда можно сделать так

а какой в этом смысл именно в таком варианте? и зачем рекомендовать некорретный код, многие разработчики   копируют ваш код не задумываясь, например, модуль "Генератор модулей (codegen)" генерируют болванку с такой же ошибкой.

Daniel пишет:

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

А что поделать если у СДЭК такой формат запроса для рассчета стоимости.

Вот типичный пример наследования \RS\Orm\ConfigObject взятый из модуля shop:

class File extends \RS\Orm\ConfigObject
{
    function _init()
    {
        parent::_init()->append(array(...));
    }
}

1. Почему в публичных методах опущен public? Насколько я помню в последних версиях PHP это вызывает notice.
2. Почему _init возвращает void, а не \RS\Orm\PropertyIterator? Это же явная ошибка + усложняе отладку в IDE .

Закусило Александр пишет:

Я его не дописал, т.к. пол года назад наткнулся на то что у Яндекс доставки не работала Почта России. И они через пол года ответили. Поэтому хочу продолжить.

довольно сырой сервис - много ошибок в документации, но в техническом плане сейчас вроде все ок - по крайней мере жалоб от клиентов я не получал)

Закусило Александр пишет:

Напишите мне на E-mail я пришлю.

у Вас только сайт указан, если не сложно, то скиньте на указанный в моей инфе мейл

Закусило Александр пишет:

Но лучше всего смотреть внутри системный СДЕК, он покрывает большинство кейсов.

я пока только разбираюсь с RS т.ч. мне проще разобраться с отдельным модулем доставки чем с модулем магазина в общем)

Закусило Александр пишет:

Млин, я почти Яндекс Доставку дописал )).

Если скинете модуль, то могу проверить/пофиксить интеграцию с я.доставкой. Хочу посмотреть реальный пример модуля для RS.

Закусило Александр пишет:

Млин, я почти Яндекс Доставку дописал )).

Без проблем, значит не буду её портировать.

Daniel пишет:

Точно нужны ПЭК,СДЭК,Деловые линии

СДЭК же вроде есть в дефолтных доставках магазина.

admin пишет:

Рекомендую задать этот вопрос в сервисе пожеланий, думаю там будет больше ответов.

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

Планирую перенести свои модули доставки (Яндекс.Доставка, Grastin, Hermes, ПЭК, DPD, Dalli-Service) на платформу RS.
Решил заранее поинтересоваться: нужны ли Вам какие-то из вышеперечисленных модулей?