Этот раздел по сути — мой блог о MODx Revolution. Из статей можно больше узнать о самой системе, её возможностях, инструментах. Рассказываю, как работать с MODx Revolution, что можно сделать, как доработать и настроить ваш сайт так, чтобы он оптимально отвечал поставленным задачам и вашим пожеланиям.
Благодаря статьям заниматься разработкой на базе MODx Revolution будет проще. В своём блоге я делюсь накопленными наработками, опытом. Заодно вы сможете узнать много нового об этой прекрасной системе, что поспособствует её продвижению.
Ссылка на репозиторий: https://github.com/litosh-web/sampleModextra
Данный репозиторий хранит пример транпортировчного пакета для MODx Revolution 2.8.
Склонируйте его в папку _build в свой проект, запущенный на локальном сервере, с помощью команды git clone.
https://site.ru/?utm_source=vkОтчеты - Популярные - Метки UTM:
Была проблема с тем, что FormIt никак не возвращал ошибку на return false; и просто отправлял форму со знаком успех.
Ошибка:
[onlineChat] Could not load controller file: /public_html/core/components/onlinechat/controllers/web/onlineChat.php
Решение:
В данном случае название файла было с БОЛЬШОЙ буквы и из-за этого он не находил сам файл.
JavaScript событие msOptionsPrice при переключении опции:
$(document).on('msoptionsprice_product_action', function (e, action, form, response) {
if (response.data.modification.name) {
}
});
При встраивании Youtube видео на HTML страницу (уже не первый раз у меня), страница начинает очень медленно грузится. Не понимал о чем речь. Вроде стандартное дело. Так ещё ошибки посыпались подобного рода, как из пулемёта:
https://play.google.com/log?format=json&hasfast=true&authuser=0 net::ERR_CONNECTION_RESET
https://static.doubleclick.net/instream/ad_status.js net::ERR_BLOCKED_BY_CLIENT
https://googleads.g.doubleclick.net/pagead/id net::ERR_BLOCKED_BY_CLIENT
В интернете нет никакой информации. Пришлось поднапрячься и помучиться... В итоге, оказалось, что нужно использовать сторонний плагин для Jquery или JS. Чтобы всё было адекватно. Я использую этот плагин https://github.com/the-muda-organization/youtube-lazyload и всё цивильно работает. Что неожиданно, на самом деле.
В MODx в кэш можно записать любые значения. И хранить можно даже многоуровневые массивы. Например, какой-то процесс забирает очень много времени. Отличная идея - записать его в кэш при первом выполнении. Тогда другие пользователи вашего сайта, уже получат записанные данные. А получение их будет максимально быстрым.
// Записываем данные в раздел кеша по умолчанию со сроком действия 2 часа.
$modx->cacheManager->set('testdata', $str, 7200);
// Получаем данные из кеша снова. Возвращается ноль, если кеш недоступен или срок его действия истек.
$str = $modx->cacheManager->get('testdata');
Очистить записанные значения можно через админку: Управление - Очистить кэш.
Процессор для массового удаления из избранного. Принимает значения ids - ID товаров.
core/components/custom/processors/web/favorites/remove.class.php
<?php
require_once MODX_CORE_PATH . 'model/modx/modprocessor.class.php';
class RemoveFromFavoritesCustom extends modProcessor
{
public $objectType = 'modResource';
public $classKey = 'modResource';
public function process()
{
$ids = $this->getProperty('ids');
$msFavorites = $this->modx->getService('msfavorites.msFavorites', '', MODX_CORE_PATH . 'components/msfavorites/model/');
if ($msFavorites) {
foreach ($ids as $id) {
$output = $msFavorites->processMethod([
'ctx' => 'web',
'method' => 'remove',
'key' => $id,
'list' => 'default',
'type' => 'resource',
'service' => 'msfavorites',
//'action' => 'favorites/multiple'
]);
}
}
$output = $this->modx->fromJSON($output);
if ($output['success'] == true) {
$output_2 = $output['data'];
}
return $this->success('', [
'remove_ids' => $ids,
'output' => $output_2
]);
}
}
return 'RemoveFromFavoritesCustom';