Дмитрий

Дмитрий

С нами с 01 февраля 2016; Место в рейтинге пользователей: #296
Василий Наумкин
27 января 2024, 06:27
1
+2
mFilter2 медленный по причине медленного устройства традиционных баз данных и языка PHP в принципе.

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

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

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

А с базой MODX работать придётся даже ElasticSearch, потому что именно в ней хранятся данные товаров, которые нужно фильтровать.
Наумов Алексей
26 октября 2018, 16:14
1
0
По вашему сценарию — загрузить одну фоточку, посмотреть, какие записи появятся в таблице modx_product_files и добавить такие записи в эту таблицу для ваших файлов.
Но вы пытаетесь достать до гланд через кхмм..))

В общем логичнее фото товарам добавлять так:
1. складываем фоточки в отдельную папку
2. Прогоняем скрипт, который загрузить фото к товарам. Пример кода здесь.
Володя
07 августа 2018, 18:45
1
+1
вы используете модификатор, для корректной работы используйте оператор присутствия
{($key in list [1, 3, 42]) ? 'ключ найден' : 'не найден'}
Денис
03 августа 2018, 10:22
1
+1
Вся проблема в открывающих фигурных скобках. Везде, что не является феномом, ставьте пробел после открывающей фигурной скобки и проблем не будет. Даже 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 -->
Дмитрий
22 июля 2018, 23:19
4
+5
Да, Сергей! Вчера поставил на все сайты! Теперь думаю, как жил без этого раньше =)

Кому интересно – вот инструкция:
У меня хостер в панели предлагает запаролить папку.
weranda
18 декабря 2017, 15:07
1
0
Работает. Спасибо большое за помощь!

Как я понял:

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

Верно?
Дмитрий Мансуров
12 января 2017, 00:53
4
0
Спустя несколько лет вопрос все еще актуален поэтому напишу краткую инструкцию
Редактируем файлы
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
25 декабря 2016, 23:16
4
+3
Мало кто знает про такой класс как modContextResource. А ведь он есть, и что самое интересное, работает. Это позволяет документ определить сразу в нескольких контекстах (несколько записей Документ-Контекст). Тогда этот документ будет виден и в других контекстах, прям как родной (точнее в $modx->context->aliasMap). Это необходимо, чтобы корректно ссылки формировались и документ при заходе в контекст находился.
То есть не надо плодить несколько документов. Надо просто документы, которые должны быть видны в нескольких контекстах, определять в нужные. И тогда все будет по фэншую.
Sergey Pozhidaev
26 октября 2016, 09:09
1
0
Ну переписывать или нет, конечно ваше дело. Нужна скорость — перепишите. А +pagetitle, наверное слишком часто у вас вызвается т.к. в доках
Если на странице какой-то тег вызывается несколько раз, то эти вызовы суммируются.
Ганин Роман
24 апреля 2015, 22:57
11
+2
Начало разработки — за пределами 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.