Готовые решения
Авто обновление индекса mSeach2 через cron
Может кому пригодится крон для массового обновления индексов #msearch2 #cron
Инструкция:
— создаем фай в корне msearch2_cron.php содержимое кода ниже.
— запуск к примеру curl www.ru/msearch2_cron.php
Инструкция:
— создаем фай в корне msearch2_cron.php содержимое кода ниже.
— запуск к примеру curl www.ru/msearch2_cron.php
<?php
// Отключение буферизации
ignore_user_abort(true);
set_time_limit(0);
ob_implicit_flush(true);
ob_end_flush();
header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
ob_flush();
flush();
define('MODX_API_MODE', true);
require 'index.php';
/** @var modX $modx */
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_FATAL);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
/** @var modUser $adminObj */
$adminObj = $modx->getObject('modUser', ['sudo' => 1]);
$modx->user = $adminObj;
$offset = 0;
while (true) {
/** @var modProcessorResponse $response */
$response = $modx->runProcessor('mgr/index/create', [
'limit' => 1000,
'offset' => $offset,
], [
'processors_path' => MODX_CORE_PATH . 'components/msearch2/processors/'
]);
if ($response->isError()) {
echo "Ошибка: " . $response->getMessage() . "\n";
ob_flush();
flush();
break;
}
$data = $response->getObject();
if ($data['offset'] >= 1) {
echo "Индексировано: {$data['offset']}\n";
ob_flush();
flush();
}
// Если offset == 0 → завершаем
if ($data['offset'] === 0) {
echo "Получен нулевой сдвиг. Индексация остановлена.\n";
ob_flush();
flush();
break;
}
// Обновляем offset для следующего шага
$offset = $data['offset'];
// Если достигли конца
if ($offset == 0) {
echo "Индексация успешно завершена.\n";
ob_flush();
flush();
break;
}
//sleep(1); // пауза между порциями (можно убрать)
}
Вставка CSS в <style> через маркеры и data-атрибуты
Всем добра! Пишу впервые статью, и повод для неё оказался вполне практичным: нужно было повысить показатель First Paint на одном из проектов. В процессе оптимизации стало понятно, что стандартное подключение CSS через
Становится узким горлышком — оно замедляет отрисовку и задерживает появление контента на экране.
Чтобы этого избежать, было решено встроить критически важные стили прямо в HTML, используя тег style.
Так браузер сразу видит нужные правила и начинает отрисовку без лишних пауз.
<link rel="stylesheet">
Становится узким горлышком — оно замедляет отрисовку и задерживает появление контента на экране.
Чтобы этого избежать, было решено встроить критически важные стили прямо в HTML, используя тег style.
Так браузер сразу видит нужные правила и начинает отрисовку без лишних пауз.
Проверка на новые файлы с уведомлением в телегу
Здравствуйте.
Прочитал новый топик о новом нашествии вирусов, которые меняют файлы и что-то там «майнят» создавая нагрузку.
Решил поделиться своим простым скриптом, который контролирует появление новых файлов их изменения, и если таковые будут выявлены, вышлет уведомление в телеграм. Нужно поместить данный скрипт в папку в корне сайта.
Например, detect/file_change_detector.php
Я например, запускаю раз в 6 часов по крону.
P.S.
Пишите, если решение будет востребовано могу создать компонент для MODX
Update:
Компонент создан для MODX2 и MODX3. Загрузил в репозиторий, жду модерации.
Прочитал новый топик о новом нашествии вирусов, которые меняют файлы и что-то там «майнят» создавая нагрузку.
Решил поделиться своим простым скриптом, который контролирует появление новых файлов их изменения, и если таковые будут выявлены, вышлет уведомление в телеграм. Нужно поместить данный скрипт в папку в корне сайта.
Например, detect/file_change_detector.php
Я например, запускаю раз в 6 часов по крону.
P.S.
Пишите, если решение будет востребовано могу создать компонент для MODX
Update:
Компонент создан для MODX2 и MODX3. Загрузил в репозиторий, жду модерации.
DateAgo
У меня возникли сложно с DateAgo, поэтому решил написать свой снипет, может кому пригодиться.
Отправка цели "Заказ оплачен" в Яндекс Метрику, если пользователь не вернулся на сайт из платёжной системы
Приветствую, друзья.
Расскажу, как я решил задачу с отправкой цели «Заказ оплачен» в Яндекс.Метрику, точнее статуса Заказа на «Оплачен». Что здесь такого, можете подумать вы? Вот и я так же подумал, но всё оказалось несколько сложнее, и готовых решений на этот счёт тоже нет.
Представьте себе сценарий: покупатель приходит на сайт, оформляет заказ и после оформления переходит на страницу платёжной системы для оплаты заказа. Всё, вроде бы, просто, но как отправить цель в Метрику, если пользователь не вернулся из платежной системы, и просто закрыл страницу? Ведь счётчик Метрики представляет собой JavaScript API, а значит работает в браузере и пользователь должен вернуться обратно на сайт на какую-то страницу, где мы выполним код отправки цели.
Т.к. мы не можем на это повлиять, то решать этот вопрос мы будем с помощью API Метрики, офлайн-конверсий, плагина для MODX, а также нам придется расширять поля заказа.
Расскажу, как я решил задачу с отправкой цели «Заказ оплачен» в Яндекс.Метрику, точнее статуса Заказа на «Оплачен». Что здесь такого, можете подумать вы? Вот и я так же подумал, но всё оказалось несколько сложнее, и готовых решений на этот счёт тоже нет.
Представьте себе сценарий: покупатель приходит на сайт, оформляет заказ и после оформления переходит на страницу платёжной системы для оплаты заказа. Всё, вроде бы, просто, но как отправить цель в Метрику, если пользователь не вернулся из платежной системы, и просто закрыл страницу? Ведь счётчик Метрики представляет собой JavaScript API, а значит работает в браузере и пользователь должен вернуться обратно на сайт на какую-то страницу, где мы выполним код отправки цели.
Т.к. мы не можем на это повлиять, то решать этот вопрос мы будем с помощью API Метрики, офлайн-конверсий, плагина для MODX, а также нам придется расширять поля заказа.
Простая drag-n-drop зона для отправки файлов с помощью FormIt
Привет, друзья!
Передо мной возникла казалось бы, банальная задача — сделать форму, которая будет отправлять файлы на почту с drag-n-drop зоной.
Мне почему-то крайне не хотелось подключать и развлекаться со сторонними библиотеками типа dropzone.js или filepond, да и вообще как-то не очень много информации я нашел на этот счёт, поэтому было решено сделать своё небольшое решение, как говорится, на коленке, которым я с вами и поделюсь. Моё решение представляет из себя простую визуальную дроп-зону, она не загружает файлы на сервер и т.д., то есть вы просто скидываете в неё несколько файлов, а их отправка на почту будет производиться средствами FormIt.
Передо мной возникла казалось бы, банальная задача — сделать форму, которая будет отправлять файлы на почту с drag-n-drop зоной.
Мне почему-то крайне не хотелось подключать и развлекаться со сторонними библиотеками типа dropzone.js или filepond, да и вообще как-то не очень много информации я нашел на этот счёт, поэтому было решено сделать своё небольшое решение, как говорится, на коленке, которым я с вами и поделюсь. Моё решение представляет из себя простую визуальную дроп-зону, она не загружает файлы на сервер и т.д., то есть вы просто скидываете в неё несколько файлов, а их отправка на почту будет производиться средствами FormIt.
Получаем color и pattern из таблицы зная название цвета для дополнения msOptionsColor
Добрый день!
Заметка по сути больше для себя, чтобы использовать в будущем на других проектах, но если кому то пригодится, то буду рад.
Сильно не критикуйте для решения задачи использовал GPT, поэтому конструктивная критика по коду сниппета ниже, приветствуется.
И так в чем суть:
Появилась такая проблема при использовании дополнения msOptionsColor при выводе цветов в mFilter2.
Вызов фильтров в шаблоне подразумевает что будут выводиться не просто названия цветов, а и их иконки так сказать, см. пример:
Заметка по сути больше для себя, чтобы использовать в будущем на других проектах, но если кому то пригодится, то буду рад.
Сильно не критикуйте для решения задачи использовал GPT, поэтому конструктивная критика по коду сниппета ниже, приветствуется.
И так в чем суть:
Появилась такая проблема при использовании дополнения msOptionsColor при выводе цветов в mFilter2.
Вызов фильтров в шаблоне подразумевает что будут выводиться не просто названия цветов, а и их иконки так сказать, см. пример:
Docker-compose для MODX c блэкджеком и штуками
Долгое время для теста новых дополнений использовал modhost.pro. На нем было быстро и удобно развернуть и протестировать под разные версии php. Но так как modhost.pro уже закрыт пришлось написать свое решение с использованием docker-compose.
Кейс gtsAPI. CRUD пользователей на фронте
gtsAPI и PVTables специально предназначены для быстрого программирования CRUD в MODX. Сейчас, покажу как их использовать для быстрого создания интерфейса редактирования пользователей.


Вставка видео с Rutube с управлением на сайте
Всем привет. Думаю, сейчас некоторую актуальность приобрела работа с видео-хостингом Rutube и люди начали встраивать видео на свои сайты оттуда. Тут мне пришла небольшая задачка добавить на сайт видео с Rutube, с некоторыми пожеланиями. Необходимо было сделать своё изображение-заглушку поверх видео, добавить воспроизведение по нажатию на кнопку play, и сворачивать видео в мини-окошко в углу экрана при прокрутке страницы (без прерывания воспроизведения).