Дмитрий

Дмитрий

Был в сети 30 августа 2024, 20:01
Заказы не принимаю
Василий Наумкин
Василий Наумкин
mFilter2 медленный по причине медленного устройства традиционных баз данных и языка PHP в принципе.

Вот уж не соглашусь — из базы он только выбирает данные, затем строит файловый индекс, и его фильтрует на PHP, пробегая по массивам. И, полагаю, делает это совсем неоптимально.

Сегодня есть гораздо более быстрый компонент
k-samuel/faceted-search, который я опробовал на разных проектах, в том числе и с большим количеством данных — результаты отличные. Вопрос только в том, сможет ли кто-то, и захочет ли, прикрутить этот пакет к MODX.

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

А с базой MODX работать придётся даже ElasticSearch, потому что именно в ней хранятся данные товаров, которые нужно фильтровать.
Наумов Алексей
Наумов Алексей
Денис
Денис
Вся проблема в открывающих фигурных скобках. Везде, что не является феномом, ставьте пробел после открывающей фигурной скобки и проблем не будет. Даже ignore не нужен.
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){ w[l]=w[l]||[];w[l].push({ 'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KCWCD3M');</script>
<!-- End Google Tag Manager -->
Дмитрий
Дмитрий
weranda
weranda
Работает. Спасибо большое за помощь!

Как я понял:

— меняем в БД тип поля на TEXT
— меняем тип поля в файле /core/model/modx/mysql/modresource.map.inc.php
— но сохраняться русурс все равно не будет из-за автоматического подсчета символов поля в файле manager/assets/modext/widgets/resource/modx.panel.resource.js
— поэтому удаляем строку «maxLength: 500» или ставим ограничение на нужное количество символов
— при обновлении смотрим исходники пакета обновления и если есть изменения в файлах, отредактированных ранее, вносим соответствующие коррективы.

Верно?
Дмитрий Мансуров
Дмитрий Мансуров
Спустя несколько лет вопрос все еще актуален поэтому напишу краткую инструкцию
Редактируем файлы
core/components/minishop2/model/minishop2/mscarthandler.class.php
Ищем
$count = inval($count);

(у меня это строка 153)
Меняем на
$count = floatval($count);
Файл:
core/components/minishop2/model/minishop2/mysql/msorderproduct.map.inc.php
Ищем
'count' => 
    array (
      'dbtype' => 'int',
      'precision' => '10',
      'phptype' => 'integer',
      'attributes' => 'unsigned',
      'null' => true,
      'default' => 1,
    ),
меняем на
'count' => 
    array (
      'dbtype' => 'decimal',
      'precision' => '10,2',
      'phptype' => 'float',
      'null' => true,
      'default' => 1,
    ),
Файл:
core/components/minishop2/model/schema/minishop2.mysql.schema.xml
Ищем
<field key="count" dbtype="int" precision="10" phptype="integer" attributes="unsigned" null="true" default="1"/>
меняем на
<field key="count" dbtype="decimal" precision="10,2" phptype="float"  null="true" default="1"/>
Fi1osof
Fi1osof
Мало кто знает про такой класс как modContextResource. А ведь он есть, и что самое интересное, работает. Это позволяет документ определить сразу в нескольких контекстах (несколько записей Документ-Контекст). Тогда этот документ будет виден и в других контекстах, прям как родной (точнее в $modx->context->aliasMap). Это необходимо, чтобы корректно ссылки формировались и документ при заходе в контекст находился.
То есть не надо плодить несколько документов. Надо просто документы, которые должны быть видны в нескольких контекстах, определять в нужные. И тогда все будет по фэншую.
Sergey Pozhidaev
Sergey Pozhidaev
Ну переписывать или нет, конечно ваше дело. Нужна скорость — перепишите. А +pagetitle, наверное слишком часто у вас вызвается т.к. в доках
Если на странице какой-то тег вызывается несколько раз, то эти вызовы суммируются.
Ганин Роман
Ганин Роман
Начало разработки — за пределами MODX. Вёрстка (БЭМ) шаблонов, чанков и страниц в Sublime Text 3 с использованием Gulp-задач для автокомпиляции с использованием пре- и постпроцессоров (ускоряют разработку в 4-5 раз), зависимости: bower, для UI-тестов адаптивности: BrowserSync. Минификация стилей и скриптов на клиенте (прекратите вешать эту задачу на MinifyX/сервер!). Кодстайл: CSScomb и JSCS + JSLint. В дальнейшем можно настроить автоматическую выгрузку по SFTP скомпилированных файлов прямо на сервер. Шаблонизация на клиенте легко настраивается с помощью gulp-rigger, gulp-file-include или gulp-include-source. За счет вотчеров скорость просто реактивная. Особенно удобно, если монитора два и больше — в одном мониторе код проекта, в остальных — мгновенный результат (страница обновляется быстрее, чем я успеваю перевести взгляд с одного монитора на другой или переключиться на новый раб. стол).
Инициализация сервера: ansible, установка MODX: Gitify, импорт настроек: Teleport. Импорт уже подготовленных чанков, tpl-ек занимает минуты, нет необходимости заниматься «клавадрочерством» с Ctrl+Tab (переключиться на фронтенд-вкладку), Ctrl/Cmd+R (обновить страницу), чтобы просмотреть результат — всё уже оттестированно на этапе вёрстки. Остаётся только настроить магию сниппетов и оформить Custom Forms. Дальше — оверлокинг с XDebug, debugParser, BloodLine и Chrome DevTools.