Николай

Николай

С нами с 09 ноября 2013; Место в рейтинге пользователей: #57
Николай
20 апреля 2019, 23:19
+4
Сколько крутых модиксеров уже пропали и вряд ли когда вернуться.
Как одна из возможных причин то, что они перестали клепать типовые сайты и занялись более сложными вещами. А для типовых всё-таки MODX далеко не так уж и плох. И мне кажется не все постигнув дзен бегут от него. Я думаю если возникнет необходимость быстро запилить небольшой сайтик, или магазин, то сбежавшие вполне вероятно сделают его на MODX) Тем более, что на новых, что на старых технологиях, разработка на потоке рано или поздно превращается в рутину, и пофиг какие там технологии под капотом. По-началу то конечно всё интересно и здорово, а потом одни и теже механические операции и мысли, а нет ли чего-то получше…
Николай
20 апреля 2019, 14:13
+7
Николаю Ланцу бы в команду дизайнера с верстальщиком как минимум, и партнёра приземлённого и рассудительного, и тогда бы его таланты и опыт заработали бы на все 100%. А иначе со стороны многие воспринимают его идеи и наработки в духе «ничего не понял, но очень интересно». Даже если его PrismaCMS и станет заслуживающей внимания, этого просто никто не поймёт и не оценит, потому-что то в каком виде он всё преподносит, может оценить только гик-программист, который также заражён этой идеей. И даже просто гики-программисты не захотят вникать, что уж говорить о целевой аудитории — простых пользователей и разработчиков, кому бы сайтик запилить не углубляясь в дебри. Так что в данном контексте закрытие modxclub.ru вряд ли можно считать критерием заката MODX. Ведь с таким же успехом Николай может через год придти к выводу, что будущее за икусственным интеллектом, а сайтики это так, игрушка для детей, и бросит все силы на Python, так и не закончив свои наработки на JS. Хотя по сути все к этому склонны, просто кто-то меньше — будет стоять до конца, как Василий, а кого-то постоянно манят неизведанные дали)
Николай
20 апреля 2019, 13:23
0
А еще оформление не ахти
Вы имеете ввиду дизайн? Так он какой угодно будет, нарисует вам дизайнер супер-классный дизайн, сверстает его верстальщик, и получится красивый сайт. Я таких видел немало на MODX, и сам натягивал вёрстку с достойным дизайном. А блоги не показатель, это не коммерческие сайты, с ними заморачиваться смысла мало.
Николай
17 апреля 2019, 01:10
0
Но как Вы показываете работу заказчику? Ведь локальный сайт доступен только Вам. А что если заказчик хочет раз в пару дней видеть результат?
На мой взгляд это его личные проблемы. Особо привередливых заказчиков лучше сразу сливать) Не надо браться за всё что под руку попадётся. Выберите свою схему работы и следуйте только ей, не хотят так работать — счастливого пути. Представьте вы приходите в макдональдс и говорите: я хочу пройти на кухню и посмотреть как готовится мой гамбургер. Почему? Ну я так хочу) Аналогично и тут. Есть порядок работы с клиентами и везде ему следуют, согласовывая конечно с законодательством и ситуацией на рынке. Есть такой тип заказчиков, которые хотят контроллировать каждый ваш шаг, превращая вас в инструмент разработки. Охота вам быть IDE понимающей человеческий язык? Мне не особо) На эту тему есть одно видео)

К примеру Bitrix или Drupal требуют специфических настроек сервера. А значит вам нужно на удаленном сервере иметь какие-то разные аккаунты, учитывая особенности движков.
Вот вот, берётесь за всё подряд. И столько ресурсов тратите, чтобы разгребать косяки, нигде так толком и не разобравшись. Все эти проблемы решает специализация. Если хорошо знаете MODX, то делайте на нём. Освоили другой инструмент — подключили его к работе. Не знаете сервера, или какую-то тему, отложите, делайте что знаете, параллельно изучая что-то большее.
Николай
02 апреля 2019, 03:31
0
Для наглядности на фронте вот так это смотрится. Это уже миниатюры, оригиналы открываются через fancybox.



Обработаны плагином (событие OnLoadWebDocument) с помощью dom-парсера, мне нравится phpQuery. Названия методов и принцип работы такой же как в jQuery.
Николай
02 апреля 2019, 03:17
0
Ещё один неплохой вариант применения способа. Если фоток много, то лазить за каждой через кнопку накладно, даже если сразу нужная папка откроется. Но CKEditor поддерживает перетаскивание фото мышью, и тогда можно делать вот так:



Можно мышью накидать нужных фото по одной, прям без разбора, одну на другую, они добавятся в один абзац. Правда если кликнуть по ним двойным щелчком, то редактирование не откроется. Чтобы редактирование стало доступно достаточно нажать на источник, и обратно, и тогда можно редактировать фотки. Я сразу задал им необходимую высоту, чтобы во всё окно не растягивались. С помощью плагинов можно распарсить всё это дело, обернуть тегами, и даже fancybox прикрутить предварительно заменив оригиналы миниатюрами. А менеджерам останется показать простой алгоритм добавления галерей прямо в редакторе. Да мне и самому удобнее намного, теперь только так и буду делать. За пару минут можно наполнить галерею как на скрине.
Николай
30 марта 2019, 13:27
+3
Не соглашусь, почитайте за сегодняшний день, лично я много чего черпаю для себя о разработке в целом, проблемах, настроениях и т.д. А если нужны какие-то технические нюансы, то их на этом сайте вагон года с 2012-го. А также есть куча других сайтов и каналы на ютубе. Чат для живого общения, сплочения сообщества, пусть даже и про кулинарию пусть будет) Непонятно какая полезная инфа вам нужна. На этом сайте есть поиск, вбиваете всё что нужно и находите. Что не находите пишите заметку — вам помогают. А не хотите время тратить на чат, так ведь никто насильно не заставляет)
Николай
25 марта 2019, 23:42
0
Блин, а я ищу ищу класс такой, не найду, а это же дополнение))
Николай
25 марта 2019, 20:11
0
Решение конечно такое себе.
Если контент-менеджер один, то проблем никаких. Мне кажется где-то лежит класс, отвечающий за диспетчер. Он же открывает источник по умолчанию. Вот этот момент если отловить где-то, то можно уже завести сколько угодно пользователей и каждому отдельный источник назначить. И тогда они мешать не будут друг другу.

Как потом удалять неиспользуемые файлы и папки и т.д.
Да и фик с ними) Каждому ресурсу своя папка, пусть она будет пустая. А вообще зная путь к этим папкам можно легко вычислить какие пустые и удалить, если очень надо. А неиспользованных файлов думаю будет минимум, иначе зачем их загружать. При обычном способе ситуация такая же. Можно и файлы неиспользуемые вычистить, перебирать ресурсы, искать ссылки на картинки в content, сравнивать с тем что есть в папке ресурса, и неиспользуемые файлы удалить. Довольно простой скрипт получится, опять же если очень надо)

А вообще, когда сайт разрастается, пользоваться встроенным диспетчером файлов становится не очень удобно.
Не то что клиенту, а даже мне неудобно) Мне ничего умнее в голову не приходит как по папкам с id ресурсов раскидывать файлы. С буквенными названиями ещё больше запутаешься. Но когда таких папок хотя бы 50+ штук, то каждую загружаемую фоточку в них искать это геморрой, а если их в одной статье десяток, то столько времени теряется на это…
Николай
25 марта 2019, 13:45
0
Можно не переопределять целиком метод getColumns, а как-то через прототип добавить к существующему массиву новое поле. Но пока не знаю как это сделать.
Николай
24 марта 2019, 13:41
0
Ну, варианта только 3. Сервер, ПО сервера и то как сделан сайт. 5-10 тыс товаров для MODX это немного, по крайней мере точно 25 секунд не должна грузиться страница. Из поста я понял, что у вас VPS, а не хостинг. Стало быть либо сами настраивали, либо кто-то ещё. Я бы первым делом проверил сайт на обычном хостинге. modhost.pro, timeweb.ru, beget.ru, mchost.ru на них MODX нормально работает. А есть такие, где тормозит даже пустой сайт.
Николай
24 марта 2019, 01:13
0
И ещё вот дополнение с помощью которого можно посмотреть сколько времени на выполнение занимает каждый сниппет, чанк и т.д. — debugParser. Но эти данные стоит смотреть если знаешь, что с сервером всё хорошо.
Николай
24 марта 2019, 00:55
0
Скорее всего сервер настроили криво, на timeweb перенесите сайт, 10 дней там для теста даётся, посмотрите будет ли разница. Поддержка конечно будет писать отписки, ссылаясь на оптимизацию, кеширование и т.д.
Николай
22 марта 2019, 13:59
0
Насчёт скобок соврал, работает и без пробелов, то ли раньше не работало, то ли не знаю откуда я это взял)
Николай
22 марта 2019, 13:47
0
А что за знаки — « », откуда это?) Должны быть кавычки двойные — " "
И в феноме нельзя писать {, нужно ставить пробел после {. Из примера выше:

'where' => '{ "class_key":"msProduct" }',

Тогда уже Fenom воспримет это как строку, а не как команду.
Николай
22 марта 2019, 13:42
0
Никакой разницы, все данные кучей попадают в сниппет, а что в первую очередь использовать, что во вторую, он сам решает.
Николай
22 марта 2019, 13:08
+2
Разве что ошибка 'Error caching lexicon topic lexicon/ru/core/resource' вылезает то и дело даже на чистой установке. И ещё бывают какие-то глюки хостинга, и тогда уже компоненты или движок сыпят ошибки. Короче, чистые логи это походу недостижимый идеал)
Николай
22 марта 2019, 12:34
4
+5
Я вот таким вариантом пользуюсь:

<?php

if( in_array($modx->event->name, ['OnManagerPageInit','OnBeforeManagerLogin']) ) {
    $logpath = MODX_CORE_PATH . 'cache/logs/error.log';
    
    if( file_exists($logpath) ) {
        if(filesize($logpath) > 5000000) {
            $logcontent = file_get_contents($logpath);
            $filename = 'error-'. date("Y-m-d_H:i:s");
            
            $zip = new ZipArchive();
            $zip->open(MODX_CORE_PATH . 'cache/logs/'. $filename . '.zip', ZipArchive::CREATE);
            $zip->addFromString($filename . '.txt', $logcontent);
            $zip->close();        
            
            $modx->runProcessor('system/errorlog/clear');
        }
    }
}

Николай
20 марта 2019, 18:44
0
В деталях не знаю, но menuindex формируется исходя из значений menuindex соседних ресурсов, на одном уровне вложенности относительно их родителя. Другие уровни вложенности в расчёт не берутся. Если нужно выстроить menuindex по порядку с учётом вложенности ресурсов, то я такой скрипт использую:

<?php

global $menuindex, $modx;

function updateMenuIndex($id) {
    
    global $menuindex, $modx;
    
    $childsIds = $modx->getChildIds($id,1,array('context' => 'web'));                   
    if(!count($childsIds)) return;
    
    $q = $modx->newQuery('modResource');
    $q->where( ['id:IN' => $childsIds] ); 
    $q->sortby('menuindex', 'ASC');
    
    $result = $modx->getCollection('modResource', $q);
    
    foreach($result as $key=>$res) {
        $menuindex++;

        $res->set('menuindex', $menuindex);
        $res->save();
        //echo "$menuindex - {$res->pagetitle} ({$res->id})
";
        
        updateMenuIndex($res->get('id'));
    }
}

updateMenuIndex(0);
return "menuindex обновлены у $menuindex ресурсов";

Можно в сниппете использовать, в консоли вызвать, а можно плагин создать, я вешаю на событие OnBeforeCacheUpdate. При чистке кеша идёт сортировка menuindex, и в итоге одинаковых не встречается. На 2045 ресурсах показатели такие:

SQL time: 0.3292 s
SQL queries: 3924
PHP time: 4.0855 s
Total time: 4.4147 s
Memory: 50 MB

То есть, если ресурсов реально много, то памяти может не хватить…