Вчера в 12:31
Большие сомнения у меня в этом)
resComments — многоуровневые комментарии с пагинацией для ресурсов MODX3 3
07 января 2026, 15:36
вот этот сниппет
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService...
Проблемы с отправкой писем статус заказа из minishop2 5
06 января 2026, 20:15
Хотел проверить еще раз, теперь все работает. Спасибо.
MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24
05 января 2026, 14:53
Тоже не понял зачем эти сложности, всегда этот скрипт юзал.
Почему в новых версиях MODX не работает сброс пароля через MD5 и как восстановить доступ в manager 4
30 декабря 2025, 22:52
Почему-то прочитал это голосом комментатора из Дома 2… Только про Minishop 3!) Спасибо всем за вклад в развитие и, достаточно неплохие итоги года)
Итоги 2025 года на MODX.pro 3
27 декабря 2025, 16:41
MODX, как и любой основанный на PHP фреймворк пишет 500 ошибки в error_log. Никаких специальных настроек в нем нет. Все зависит от настроек хостинга\с...
Отладка 500 ошибки MODX 1
24 декабря 2025, 22:11
Есть поле mail_smtp_user введи туда логин, если не сработает введи email. И не забудь в emailsender корректный email прописать.
Modx 2.8.8 еще подходит отправки почты через smtp.yandex.ru? 3
24 декабря 2025, 00:23
Нет, лайки всегда были привязаны ко времени публикации, чтобы лайками старых постов рейтинг не накручивали.
MiniShop3 - новый релиз. 1.0.0-alpha.2 15
Вот создал я тв-параметр, выставил ему требования, к примеру — «число», «минимальное значение» — 300, «разрешить десятичные» — да.
И вот почему-то я был уверен, что если сделать так:
, то в $result будет ошибка. А оказывается нифига этот метод никаких таких проверок не делает и всё спокойно сохраняет, и в $result всегда приходит true. Поля проверяются на уровне javascript по ходу…
И вот это уже реально пичалька, ибо если проверки есть только на уровне скриптов, то всю валидацию надо писать самому :-(
Спасибо большое!
А вот ещё такой момент:
Через форму создания надо сохранять и твшки, но некоторые tv-шки обязательны.
Поэтому я пошёл таким путём: создал копию сниппета TicketForm (чтобы при обновлении не слетело), понаписал в ней вот это:
А в плагине на OnDocFormSave уже без проверок сохраняю тв-шки.
Так нормально? По феншую? Или есть более джедайский путь?
? Да, конечно, делают проверки и подставляют значения по умолчанию, но неужели это просто задел на будущее?
И ещё один вопрос можно? Сразу что-то забыл про него…
При установке своего компонента, создаю системную настройку. Настройка эта находится в правильном неймспейсе (в списке настроек меняю значение комбобокса с «core» на «mycomponent» и вижу её в списке). Но вот если я её получаю через:
, то получаю «NULL», а если через
, то правильное значение.
Но ведь это никуда не годится… Если у любого другого компонента будет настройка с таким же именем или, что ещё хуже, есть системная настройка с таким же именем?
Вот не хочет настройка получаться через указание неймспейса и всё тут. В чём проблема — не знаю. Может сталкивался?
и посмотри что у тебя в переменной $num лежит. Скорей всего в ней что-то такое, чего нельзя просто так на экран вывести. Ну или включи отображение ошибок — может твой скрипт просто тихо умирает на ошибках.
Именно. Но это такое не благодарное дело получится.
Но если уж заморачиваться, то логика должна быть примерно такой:
КАЖДЫЙ сниппет при КАЖДОМ своём выводе должен сверять ПРЕДЫДУЩУЮ выводимую им информацию с ТЕКУЩЕЙ выводимой им информацией. Т.е. надо завести отдельную таблицу и хранить там, к примеру, md5 от выводимых сниппетом данных и дату этих данных. И если md5 от текущих данных отличается от md5 из таблицы, то перезаписывать md5 и дату.
Потом на то же событие «OnLoadWebDocument» проверять количество сниппетов, в которых данные изменились с последнего вызова (эту переменную можно держать в сессии и каждый сниппет при необходимости инкрементирует её). И если это количество отлично от нуля, то отдавать 200. Иначе отдавать 304 (естесственно, не забыть проверять и дату последнего редактирования ресурса, как в текущем варианте).
НО:
1. Мы здесь теряем одно преимущество этого заголовка — снижение реальной нагрузки на сервер (это при достаточно годной посещаемости). Ведь фактически нагрузка увеличится! Это +1 запрос к вызову каждого сниппета и, если использовать md5, то ещё и на хэширование ресурсы тратить.
2. Как определить уникальность вызова сниппета и однозначно идентифицировать его в нашей специальной таблице?
В принципе, можно написать сниппет-обёртку (как getPage), который будет делать всю эту грязную работу. Ну и плагин доработать слегка.
Для поисковиков будет хорошо, да. Эту задачу этот сниппет+плагин будет решать.
Но со вторым «НО» из списка выше пока не понятно. Да и популярностью данное решение пользоваться не будет — оно сложно для понимания и оборачивать нужно КАЖДЫЙ вызов КАЖДОГО сниппета, что, естесственно, подавляющее большинство делать не будет.
Да и кому это вообще надо-то?))) Нафига я всё это писал? xDD
Так же, на этом сервисе есть 2 занятные статьи, после прочтения которых, вывод (относительно MODx) не такой уж и однозначный…
Дело в том, что у вас идёт проверка на последнее изменение КОНТЕНТА страницы, т.е. последнее сохранение ресурса.
И, если
дата последнего Last-modified, который запомнил клиент (браузер или робот поисковика) больше (или равна) дате последнего сохранения ресурса в modx, то вы отдаёте 304 и клиент эту страницу загружать уже НЕ БУДЕТ.
Но вот нюансы:
— если вы добавили новый ресурс, который должен быть виден в меню;
— или у вас появился новый комментарий к статье;
— или у вас стоит какой-нибудь модуль финансовых сводок, который должен отображать актуальную информацию;
— да мало ли что ещё…
то пользователь этих изменений уже не увидит! Потому что он будет брать эту страницу из своего кэша.
ИМХО вопрос с Last-Modified нужно продумывать ГОРАЗДО тщательнее и на каждом конкретном сайте в индивидуальном порядке. И простым плагином здесь уже не обойтись.
Всё зависит от (кхм) зависимостей данных, отображаемых на текущей странице, от данных на других страницах (к примеру вывод новостей) или сниппетов и модулей (к примеру галереи или комментарии).
Вот такие пироги. Решайте — выбирать вам.
А потом объединить 2 функционала)
А аватарка юзера?
В данном случае она берётся из gravatar.
Но если авы в граватаре нет, то есть ли вообще какая-нибудь возможность вытащить авы из привязанных соц.сетей? Понятно, что всё это гуглится и изучаются api социалок. Но может ты уже интересовался подобным?
з.ы. слышал, что вроде как вк аватарки не отдаёт, но ведь можно попробовать и curl прикрутить :-)
Т.е. будучи залогиненным под гугловским аккаунтом, я могу привязать и ВК, и FB, и всё остальное?
Правильно надо так: