Fi1osof
С нами с 05 мая 2014; Место в рейтинге пользователей: #108 минут назад
Добрый день. Появилась новая ошибка: 27.11.2024 12:30:20 ERROR /www/site.ru/core/components/yasmartcaptcha/model/yasmartcaptcha.class.php 60
Reco...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 6
2 часа назад
Извините, у вас сообщения закрыты. Я хотела спросить насчет компонента msExportUsersExcel. Может быть у вас есть аналогичный компонент для импорта пол...
Facade Laravel в Modx 2/3 23
2 часа назад
Андрей Степаненко.
Извините, у вас сообщения закрыты. Я хотела спросить насчет компонента msExportUsersExcel. Может быть у вас есть аналогичный компо...
Zoomx получить данные родителя на странице товара 7
4 часа назад
Таки накосячил в myTpl :-). Надо так
{foreach $ress as $res}
<p> {$res.id} {$res.surname}</p>
{/f...
Модификатор сортировки pdoResources по pagetitle 4
Вчера в 17:14
В vesp долго переезжать. Нету модульности никакой и с авторизацией, в смысле с разграничением прав, там Василий особо не напрягался :-)
Плюсы и минусы Vue и gtsAPI 17
Вчера в 13:01
Забыл написать версия modx 3.0.5
И сама форма
<form data-si-form="FormSlider" data-si-preset="slider_form" data-si-event=&quo...
[SendIt 2.0.0] Пагинация и обновлённая загрузка файлов 20
Вчера в 09:34
В критерия должны передаваться параметры where это все что можно передать
т.е.
возможно только так
$criteria = array(
"article:LIKE =>...
Массовое удаление 7
25 ноября 2024, 22:34
Вдруг кому понадобится… Прописать TV параметр в источнике файлов для MIGX можно так (для примера TV `ln`):
[[!migxResourceMediaPath...
Источник файлов и migx 6
25 ноября 2024, 21:01
Привет
Подскажи, пжл как добавить поля из компонента msFieldsmanager?
Скрин
msPre - фильтры по опциям minishop2 11
25 ноября 2024, 20:03
А как добавить если чекбоксы?
msPre добавление кастомного поля (списка с автодополнением) 4
В общем, я тут думал как вам помочь, и вспомнил, что давным-давно Илья Уткин дописывал функционал циклического выполнения кода в консоль (За что Илье отдельное спасибо). ilyaut.ru/cheats/step-by-step-the-script-in-console/
В итоге я написал вот такой скрипт: gist.github.com/Fi1osof/398e64212f1c527958adce83734ddf4b
Его можно использовать для ручной перегенерации кеша всех страниц. Если его запустить, он получит ID-шники всех целевых страниц и перегенерирует их кеш. Выглядит процесс довольно симпатично.
Вот можете воспользоваться этим скриптом. Сохраните его в консоли (функционал такой добавил Сергей Шлоков) и выполняйте когда вам надо.
Повторю логику: для того, чтобы не сбрасывался кеш на каждый чих, сделайте как я написал выше. А если вам надо вдруг сбросить кеш всего сайта вручную, то можете запустить потом этот скрипт. Если вам не хочется ждать по полчаса каждый раз, вы можете добавить в условие выборки только самые нагруженные ресурсы (к примеру, по определенным шаблонам).
Кстати, здесь сразу идея возникает связки этого скрипта с modMonitor. Монитор собирает статистику какие страницы не из кеша отдаются долго, и потом при запуске этого скрипта перегенерируются только те страницы, время генерации которых превышает заданный парог. Получится интеллектуально.
Важно: Для работы требуется минимум console-2.2.1
Ее я отправил на modx.com, но пока еще не опубликовали. Можно вручную подправить в консоли вот этот код.
Как я и говорил, на таком количестве не стоит включать настройки cacheregenerator.regenerate_docs_on_site_refresh и cacheregenerator.regenerate_docs_on_doc_save, иначе на сохранение документа и на сброс кеша сайта у вас будет запускаться механизм регенерации страниц, который в среднем занимает 1 сек на страницу (в зависимости от скорости работы сайта). Таким образом полчаса ждать после сохранения документа — вообще не вариант.
Вариант только такой: отключаете системную настройку syncsite_default и при сохранении редактируемого документа не будет сбрасываться кеш остальных документов, а только текущего, при чем у текущего документа кеш сразу будете перегенерирован. Таким образом вы получаете измененное содержимое страницы сразу в кеше.
Я не придираюсь, я просто пытаюсь понять для себя. Это и для меня все новое и я не один час потратил на поиски подходящего механизма для отправки запросов на сервер средствами php. Меня мой способ устраивает, потому что он отправляет запросы именно по протоколу ws://, ровно так же, как эти же запросы идут из браузера. Крайне не радует перспектива использовать два отдельных протокола и формировать разные форматы данных.
У тебя так же и на стороне браузера формируются запросы?
P.S. на ноде сокеты реализованы на вот этим модулем: www.npmjs.com/package/ws
Весь JS/HTML-фронт тоже имеется, включая JS-чата.
Там, конечно, немного АДъ, так как это все еще эксперименты, но разобраться, думаю, не дофига дело. Чтобы пересобрать фронт со своим измененным кодом просто переходим в папку /public/chat, выполняем команду npm install, чтобы установились все пакеты нужные.
Придется подождать не одну минутку, там много пакетов устанавливается. Когда все установится, вы увидите подобное:
После этого выполняем команду webpack -w (запустится сборщик, прослушивая изменения файлов). Когда вы увидите такое (опять-таки, возможно через пару-тройку минут):
можно будет файлы править.
К слову, использовалась вот эта заготовка фронта: github.com/MODX-Club/modx-shopmodx-frontend
Она же используется и в ShopModxBox, то есть там можно таким же образом пересобирать фронт.
То есть, если кому интересно, может сап попробовать поправить фронт (к примеру, добавить звуковые уведомления о новых сообщениях). И даже не лезя в серверную часть самого чата, можно получить свой собственный клиент (с оговорками, конечно, но все же).
С ее помощью запросы на node-сервер без проблем слать. Сампл:
Только хотел написать отдельный топик про выложенный node-клиент для нашего чата, а тут такое… Ну, тогда не буду писать отдельного топика, просто ограничусь комментом (сорри за оффтоп).
Итак, на днях я писал, что мы разрабатываем автономный node-чат (его работу можно увидеть на главной странице нашего сайта). Вопрос: хочет кто-нибудь себе такой же? Если да, то вот он: www.npmjs.com/package/node.social-client
Конкретно этот компонент — не полная версия всей системы, а только веб-сервер с чат-клиентом. Для полноценной работы ему еще нужен отдельный сервер, обрабатывающий непосредственно запросы. Как написано в ридми, вы можете использовать для этого наш сервер wss://modxclub.ru:8100 (эти сообщения будут видны на главной странице нашего сайта). Если кому-то нужен выделенный сервер для тестов, пишите в личку, подниму (бесплатно только сегодня). Вторая часть системы (уже сам чат-сервер) появится чуть позже.
Если вдруг кто пропустил сообщение Василия по поводу где можно развернуть такой сервер, уточняю: на modhost.pro
И посуточно можно, и по часам, и даже по минутам можно.
Да.
Это скорее на плечах движка магазина, того же minishop или shopmodx.
Опережая чей-то возможный вопрос «А почему такой универсальный компонент не писать на базе самого MODX-а?», я отвечу:
1. MODX сложнее в переносе. Если вы его из одной папки в другую перенесете, он у вас уже работать перестанет, надо конфиги править. node.js-проект этим не страдает, его просто перекидываешь в любую папку (или на любой другой комп, где стоит подходящая версия node.js) и все, запускаешь.
2. node.js один компонент можно запустить сразу кучу инстансов, просто указав разные порты. Это круто. Имея тот же модуль чата, можно из одной папки запустить несколько сотен отдельных комнат.
3. Установка компонентов там и там — просто небо и земля. В ноде прописал нужный компонент в package.json, выполнил npm install и все (или вообще просто npm install package). После этого в любом месте кода пишешь var module = require(module); и полетело.
В общем, я несколько лет пишу компоненты под MODX, делал не мало интеграций с различными сторонними системами, и знаю что делаю.
1. В node.js используется крутой механизм подгрузки и переопределения компонентов, например var booking = require($path_to_module);
По умолчанию будет использоваться автономный модуль работы без каких-то внешних систем. Но его можно будет легко переопределить другим модулем типа var booking = require($path_to_extra_module); в котором прописано var extra_booking = require($path_to_module); export extra_booking; (Это в общих чертах). И в этом переопределяющем компоненте будет перехват штатных событий и взаимодействие с MODX-сайтом (типа запросить имеющийся объект, отправить уведомление и т.п.).
2. Мы умеем читать конфиги MODX-а и работать с базой сайта, включая префиксы таблиц. В MODX-модель компонента мы добавим нужные классы и мап-файлы, чтобы легко можно было средствами xPDO работать с таблицами компонента напрямую, при желании.
3. Даже при работе с сайта напрямую в ноду, не придется выполнять никаких лишних проверок доступа пользователя (авторизован или нет) и т.п. Мы пересылаем запрос на сам сайт с передачей кукисов, так что даже получая запрос из браузера не напрямую, а через ноду, MODX будем воспринимать это как прямой запрос себе из браузера, так что все авторизации и сессии пользователей будут учитываться как есть.