Modx: лучшая cms, которой вы никогда не пользовались

Новый релиз пакета modLivestreet 0.5.0-rc full

После двадцати часов работы публикую свежий пакет modLivestreet, который надеюсь станет переломным в восприятии и уже сможет наглядно продемонстрировать для чего вообще это все затевалось.
Что же на этот раз нового? В этот раз упор был сделан на то, чтобы создавалось все необходимое для полной установки Livestreet-а в несколько кликов и практически полное управление движком из админки MODX, а именно:

  • Источники файлов Livestreet (полностью раздел, плагин modLivestreet, папка uploads). Теперь не придется долго искать где что лежит, а там же можно через админку управлять файлами Livestreet
  • Шаблоны для MODX, чтобы выводить главную Livestreet, любые документы Livestreet, Любые документы MODX в двух вариациях (в две колонки с лентой новостей в правом блоке, и в одну колонку без сайдбара).
  • Пара чанков, чтобы вклиниться в шаблонизацию Livestreet

В общем во многом модуль уже готов к тому, чтобы его использовать.
Под катом более полный список изменений и демо-ролик.

Все теги

По мере того, как вы будете лучше понимать, как работают шаблоны MODX, вы захотите иметь в своем распоряжении полный список доступных полей контента. Вот полный список всех тегов, полученных из этого Сообщение блога.

Тег Тип данных Описание Пример использования
text Псевдоним Обычно вы будете использовать id создавая URL, например: , но это позволяет распечатать параметр псевдонима.
int 0/1 Кэшируемый
int Ключ класса ресурса, например: modDocument
text Содержание ресурса
int Тип содержимого
date Дата создания, например, 2011-04-14 20: 40: 50, часто используется вместе с выходным фильтром strtotime Смотрите Форматы даты.
int Создано пользователем ID
int 0/1 Удаленный
int Удалено пользователем ID
date Дата удаления Смотрите Форматы даты.
text Описание
date Отредактировано на дату, например: 2011-04-18 09:06:08 Смотрите Форматы даты.
int Отредактировано пользователем ID
int 0/1 Скрыть из меню: этот атрибут используется многими сниппетами, например, Wayfinder
int ID ресурса Часто используется для создания ссылок на эту страницу.
text Резюме
int 0/1 Контейнер
text Атрибуты ссылки: они вставляются автоматически при использовании синтаксиса
text Длинное название
int Индекс меню
text Название меню
text Заголовок страницы
int Родительский ресурс
date —Дата публикации
int 0/1 Опубликованно
int Опубликованно пользователем ID
date Опубликован в Смотрите Форматы даты.
int 0/1 Rich Text
int 0/1 Searchable
int Идентификационный номер шаблона
date – Дата отмены публикации Смотрите Форматы даты.
int 0/1 Замороженный URI
string URI

Чтобы уточнить — он устанавливается только тогда, когда пользователь устанавливает будущую дату публикации в поле «Опубликовать в». И когда документ действительно опубликован, он обнуляется. Поле опубликовано всегда содержит самую последнюю дату, когда ресурс изменил неопубликованную форму на опубликованную (или дату, когда новый документ был сохранен с проверкой публикации).

Evolution CMS 2.0 на компонентах Laravel 6.0 — естественная эволюция MODX Evolution

Настало время релиза Evolution CMS 2.0 RC на компонентах Laravel 6.0, но как показал предыдущий релиз и последующие за ним обсуждения — существует масса вопросов и мифов связанных с веткой 2.0.

Самый популярный миф — в новой ветке все изменилось и по-старому уже не будет.

Неправда — будет и по-старому. Основное отличие в том, что сохранив возможности “по-старому” мы добавили возможности и “по-новому”. Уровень входа не изменился, но более продвинутые разработчики получат много готовых решений и возможностей, а те кому достаточно существующих компонентов могут работать также, как и раньше, никто не будет никого лишать привычных вещей.

Уровень совместимости максимальный — даже с версии 0.9 вы можете обновиться до 1.4, а с нее до 2.0 при сохранении функционала. Хотя надо учитывать возможные проблемы которые могут возникнуть с depricated методами из за того что нужно поднять версию php до 7.2, но скорость работы того стоит, а реагировать на эти баги буду быстро, чтобы приблизить срок стабильного релиза.

Получение полей по ID ресурса

Для получения доступа к полям ресурса, необходимо его выбрать по уникальному идентификатору.

$id = 1;
$res = $modx->getObject('modResource', $id);
echo $res->get('pagetitle');

Если код запускается в сниппете при обращении к ресурсу, то можно использовать другой вариант:

$modx->resource->get('pagetitle');
$modx->resource->get('content');
//или
$modx->resource->getContent();

Получение TV-переменных:

//текущего ресурса по id
$modx->resource->getTVValue(3);

//по названию TV-параметра
$modx->resource->getTVValue('img-news');

//получение значения конкретного ресурса
$res = $modx->getObject('modResource',1);
echo $res->getTVValue('img-news');

Сформировать URL по ID:

$url = $modx->makeUrl($id);    

manager/

Менеджер — это бэкенд или область администрирования MODX для создания ресурсов, управления пользователями и выполнения общих задач по обслуживанию сайта.

manager/assets/

Этот каталог содержит ExtJS библиотеки, а также пользовательская реализация ModExt. ModExt расширяет оригинальную библиотеку ExtJS, чтобы сделать разработку более удобной для пользователей.

manager/controllers/

Контроллеры — это файлы PHP, связанные с модами. Они просто выбирают данные и возвращают или выводят их в браузер для рендеринга и отображения. Всякий раз, когда вы загружаете страницу в Менеджере, вы фактически указываете MODX загрузить определенный контроллер, который просто загружает шаблон Smarty и выводит любой необходимый JavaScript в браузер.

manager/templates/

Этот каталог содержит файлы шаблонов для каждой страницы менеджера. Они не содержат код PHP, а используются для организации HTML. Если вы ищете файл Smarty .tpl для конкретной страницы менеджера, проверьте каталог .

Известные файлы

manager/assets/ext2/ext-all.js — Это основной файл библиотеки Ext, который должен быть включен на всех страницах диспетчера (или любой странице, использующей Ext). Он сжат, чтобы сэкономить место, сократить время загрузки и ускорить загрузку страниц. Однако, если вы выполняете много работы с JavaScript, вы неизбежно столкнетесь с некоторыми загадочными ошибками из-за сжатия. Лучший способ справиться с этим — просто переименовать этот файл, а затем переименовать файл ext-all.js в ext-all-debug.js, чтобы использовать несжатую версию во время разработки. Просто обязательно переключите их потом!

Основные возможности плагина и особенности

Основная возможность, предоставляемая дополнением FriGate для Yandex браузера, как можно догадаться, заключается в шифровании трафика. Это означает, что при попытке пользователя войти на сайт, на сервер, где она располагается, отправляются другие данные, зашифрованные или измененные. Соответственно, подлинная информация не будет доступна третьим лицам.

Процедура может быть выполнена несколькими способами:

  1. Замена или шифрование IP адреса. В результате такого подхода, фактический адрес пользователя заменяется на другой, а сайт получит входящую информацию с прокси-сервера.
  2. Ускорение получения доступа. Данная функция работает исключительно тогда, когда персональный компьютер пользоваться располагается в непосредственной близости с используемым прокси-сервером.
  3. Разблокировка. Эта возможность – своеобразный аналог замены IP адреса, так как позволяет получить доступ к сайтам, которые блокируются в определенных регионах или странах.

Следует отметить, что плагин FriGate для «Яндекс браузера» может оказаться полезным не только для рядовых пользователей ПК, но и владельцев сайтов или веб-мастеров.

Если рассматривать достоинства работы с плагином для пользователей, то в первую очередь — это избирательная работа. Это значит, что перенаправление данных через прокси будет происходить только тогда, когда прямое подключение и синхронизация с сайтом у пользователя заблокирована.

Другое достоинство заключается в том, что сервис использует специальные, выделенные прокси. Таким образом, скорость доступа становится несколько больше и увеличивается скорость обмена информацией между сервером и конечным юзером. Тем не менее, это лишь теория, а на практике получается, что все зависит от месторасположения и качества прокси.

Последнее – увеличивается безопасность данных, так как третьим лицам получить хоть какую-либо информацию о вас будет крайне сложно.

Если рассматривать преимущества использования FriGate для Яндекс браузера веб-мастерами, то несомненным достоинством является то, что посетители сайта смогут воспользоваться им даже в случае, когда тот недоступен или на некоторое время закрыт для определенного региона.

Плагин FriGate эксплуатирует прокси серверы HTTP/HTTPS прозрачного типа. Они не скрывают месторасположение и IP-адреса юзеров. Данный метод отлично подходит в тех случаях, когда требуется ускорить передачу данных и ее обработку во время общения пользователя с сервером, а также обойти некоторые локальные блокировки.

Построение конечных точек API

Настоящий API состоит из нескольких конечных точек. Если вы хотите создать правильный RESTful API, каждая конечная точка будет соответствовать «ресурсу» (не обязательно виду из левого древа MODX!), И различные HTTP-глаголы (GET, POST, PUT и DELETE) будут использоваться для взаимодействия с конкретными объектами. Допустим, вы создаете API для управления списком дел, у вас могут быть «элементы» конечной точки со следующими действиями:

  • : возвращает элементы в вашем списке дел
  • : возвращает элемент с первичным ключом 15
  • : создать новый элемент в списке дел
  • : обновить одно или несколько значений в вашем списке дел с помощью первичного ключа 15
  • : удалить элемент с помощью первичного ключа 15

В интернете много спорят о том, как назвать ваши конечные точки — в данном случае мы выбрали множественные «пункты». Стоит отметить, что у нас нет конечных точек, таких как /items/create, — это уже покрыто POST для /items и является ключевым аспектом построения API RESTful.

Чтобы создать конечную точку элементов (items), вам необходимо создать контроллер элементов (items controller). Исходя из конфигурации, которую мы передали в modRestService ранее, и значений по умолчанию, каждый контроллер должен начинаться с MyController, помещаться в каталог , а файл должен соответствовать имени конечной точки с суффиксом . Поэтому создайте новый файл и скопируйте в него следующий код:

Предполагая, что ToDoItem является именем допустимого производного xPDOObject, и вы загрузили его где-то с помощью $modx->addPackage() (например, в свой класс Service, который мы вызвали в index.php), теперь у вас есть полностью функциональный RESTful API для ваших объектов ToDoItem. Просто запросите /rest/items, и данный вызов должен вернуть ваши ToDoItems в симпатичном формате JSON.

Если у вас нет готового пакета, вы также можете установить для свойства classKey значение «modResource» и для defaultSortField значение «id», чтобы настроить API для всех ресурсов.

Это как волшебство! Но вы знаете, что еще лучше? Это полноценный API сейчас… И если вы вернетесь к действиям, которые мы упоминали ранее, все они будут работать «из коробки». Например, , вернет только элемент to do с идентификатором 1. Чтобы проверить POST, PUT и DELETE, вам, вероятно, потребуется использовать что-то вроде Postman или curl для отправки правильных запросов, но теперь они также должны быть функциональными.

Теперь, когда у вас работает базовый API, пришло время приступить к реальной разработке и заставить ее работать так, как вы хотите.

Построение тега MODX

Используя и комбинируя всю вышеуказанную информацию, мы можем создать сложный тег MODX, который будет выглядеть следующим образом:

Однако, хотя MODX позволяет использовать сложные условные фильтры, пользователи должны быть осторожны при построении сложной логики тегов. В отличие от PHP, если у вас недопустимый синтаксис тега MODX, нет полезных сообщений с номерами строк, указывающими местоположение ошибки.

Наличие тегов, требующих отладки, отрицательно сказывается на чистом виде слоя. Держите их в чистоте и простоте.

Хорошее эмпирическое правило заключается в том, что ваши теги должны помещаться в одну строку, даже если вы разметите их на несколько строк для удобства чтения. Если вы полагаетесь на операторы if и другие условия в своих тегах MODX, тогда может потребоваться пересмотр логики потока.

Примечание MODX неоднозначен к пробелам, поэтому оба приведенных ниже примера также будут приемлемы:

Доступные события

Это не исчерпывающий список, так как события все еще документируются. Спасибо за терпеливость. События TV, Template и Snippet еще не задокументированы.
Для получения полного списка, пожалуйста, либо посмотрите плагин в менеджере и посмотрите вкладку Системные события, либо просмотрите здесь

Также обратите внимание, что все события WUsr (веб-пользователя) были удалены

  1. OnBeforeCacheUpdate
  2. OnBeforeChunkFormDelete
  3. OnBeforeChunkFormSave
  4. OnBeforeDocFormDelete
  5. OnBeforeDocFormSave
  6. OnBeforeEmptyTrash
  7. OnBeforeManagerLogin
  8. OnBeforeManagerLogout
  9. OnBeforeManagerPageInit
  10. OnBeforePluginFormDelete
  11. OnBeforePluginFormSave
  12. OnBeforeSaveWebPageCache
  13. OnBeforeSnipFormDelete
  14. OnBeforeSnipFormSave
  15. OnBeforeTempFormDelete
  16. OnBeforeTempFormSave
  17. OnBeforeTVFormDelete
  18. OnBeforeTVFormSave
  19. OnBeforeUserActivate
  20. OnBeforeUserFormDelete
  21. OnBeforeUserFormSave
  22. OnBeforeWebLogin
  23. OnBeforeWebLogout
  24. OnCacheUpdate
  25. OnCategoryBeforeRemove
  26. OnCategoryBeforeSave
  27. OnCategoryRemove
  28. OnCategorySave
  29. OnChunkBeforeRemove
  30. OnChunkBeforeSave
  31. OnChunkFormDelete
  32. OnChunkFormPrerender
  33. OnChunkFormRender
  34. OnChunkFormSave
  35. OnChunkRemove
  36. OnChunkSave
  37. OnContextBeforeRemove
  38. OnContextBeforeSave
  39. OnContextFormPrerender
  40. OnContextFormRender
  41. OnContextRemove
  42. OnContextSave
  43. OnDocFormDelete
  44. OnDocFormPrerender
  45. OnDocFormRender
  46. OnDocFormSave
  47. OnDocPublished
  48. OnDocUnPublished
  49. OnEmptyTrash
  50. OnFileManagerBeforeUpload
  51. OnFileManagerUpload
  52. OnFileManagerDirCreate
  53. OnFileManagerDirRemove
  54. OnFileManagerDirRename
  55. OnFileManagerFileCreate
  56. OnFileManagerFileRemove
  57. OnFileManagerFileRename
  58. OnFileManagerFileUpdate
  59. OnFileManagerMoveObject
  60. OnHandleRequest
  61. OnInitCulture
  62. OnLoadWebDocument
  63. OnLoadWebPageCache
  64. OnManagerAuthentication
  65. OnManagerLogin
  66. OnManagerLoginFormPrerender
  67. OnManagerLoginFormRender
  68. OnManagerLogout
  69. OnManagerPageAfterRender
  70. OnManagerPageBeforeRender
  71. OnManagerPageInit
  72. OnMODXInit
  73. OnPageNotFound
  74. OnPageUnauthorized
  75. OnParseDocument
  76. OnPluginBeforeRemove
  77. OnPluginBeforeSave
  78. OnPluginEventRemove
  79. OnPluginFormDelete
  80. OnPluginFormPrerender
  81. OnPluginFormRender
  82. OnPluginFormSave
  83. OnPluginRemove
  84. OnPluginSave
  85. OnPropertySetBeforeRemove
  86. OnPropertySetBeforeSave
  87. OnPropertySetRemove
  88. OnPropertySetSave
  89. OnResourceAutoPublish
  90. OnResourceGroupBeforeRemove
  91. OnResourceGroupBeforeSave
  92. OnResourceGroupRemove
  93. OnResourceGroupSave
  94. OnRichTextBrowserInit
  95. OnRichTextEditorInit
  96. OnRichTextEditorRegister
  97. OnSiteRefresh
  98. OnSiteSettingsRender
  99. OnTemplateVarBeforeRemove
  100. OnTemplateVarBeforeSave
  101. OnTemplateVarRemove
  102. OnTemplateVarSave
  103. OnUserActivate
  104. OnUserBeforeRemove
  105. OnUserBeforeSave
  106. OnUserChangePassword
  107. OnUserFormDelete
  108. OnUserFormSave
  109. OnUserNotFound
  110. OnUserRemove
  111. OnUserSave
  112. OnWebAuthentication
  113. OnWebLogin
  114. OnWebLogout
  115. OnWebPageComplete
  116. OnWebPageInit
  117. OnWebPagePrerender

Для новичков и тех, кто разбирается

Компания Модекс включила в каталог популярные (как у оптовиков, так и у надомниц) материалы. Удобная навигация по сайту упрощает процесс выбора, сравнения, покупки. Для тех, кому могут понадобиться дополнительные разъяснения, всегда работает онлайн чат. Менеджеры готовы обстоятельно рассказать о качестве, лучшем возможном их применении, характеристиках тканей, способах оплаты с доставкой.

Каждая рубрика по-своему интересна, ведь в онлайн магазине стараются установить долгосрочные отношения не только с поставщиками, но и с заказчиками. Убедитесь, что весь товар на виртуальной витрине рассортирован очень умело:

  • Новые поступления или распродажи;

Уцененные товары или остатки;
Хиты продаж или востребованные, популярные ткани.

Но и внутри каждой рубрики, есть собственные, еще более подробные, ниши. Нужен интерлок? Выбирайте среди набивных или гладкокрашеных его разновидностей. Рибана – с начесом, с лайкрой, трансферная. Махра, футер двух- трехниточный, велюр, вискоза, пике, еще десятки материалов, с их вариациями.

Каждая позиция в каталоге имеет свой код, а также сопровождается характеристиками – плотностью, шириной рулона, составом. Дополнительно под каждой карточкой товара есть подборка подобных товаров, ведь они могут заинтересовать потенциального заказчика не меньше выбранного отреза.

Модекс помогает узнать Екатеринбург с профессиональной стороны, отсылая заказы не только по России, но даже в ближнее зарубежье. Сегодня заказчики компании есть в Белоруссии, Казахстане, но это, по мнению организаторов онлайн магазина, не предел.

Подключение к базе данных

В этом месте вы заполняете необходимую информацию о вашей базе данных.

Добавляете имя вашей базы данных и URL где находится ваша база. Для основной массы пользователей это localhost.

В свою очередь, у вас есть возможность изменить префикс таблиц. Данный префикс таблиц, использует MODX для собственных переменных. Это понадобится в случае если вы желаете в одной базе данных сохранять информацию многих сайтов на MODx.

Когда завершите жмите на ссылочку Проверить соединение с сервером баз данных. Если появятся какие нибудь ошибки, вы заметите их ниже. В случае если возникнут ошибки, удостоверьтесь, что вы верно ввели имя пользователя базы данных и пароль.

В свою очередь в случае если пользователь определенный вами не располагает правами создавать базу данных, то сделайте ее вручную.

Microsoft SQL Server Notes

Поддержка Microsoft SQL Server предусмотрена с версии MODx Revolution 2.1 В зависимости от конфигурации сети вашего SQL сервера, нужно определить следующие опции: Named pipe: (local)/SQLEXPRESS Tcp/ip: 127.0.0.1,2301 (IP, port)

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

QuadBraces — по мотивам парсера MODx

Recovery Mode

Доброго здравия хабражителям!
Когда я заглянул в исходники MODx Evolution, меня едва ли не хватил удар. Рефакторить, рефакторить и рефакторить, как, наверное, сказал бы Ильич. По сему меня хватило едва ли на пару недель рефакторинга, после чего я забросил это дело, ибо времени откровенно не было. Но разговор пойдёт не об этом.
Система шаблонизации MODx на мой взгляд — одна из самых лучших. Особенно хорошо постарались разработчики в MODx Revolution. Всё логично, расширяемо, гибко и прям-таки пасторально. Можно сказать, синтаксис шаблонизации MODx — это почти что отдельный язык разметки. Именно такое вот восхищение стало причиной, по которой я стал использовать эту методику в других проектах. И для того, чтобы не заколачивать микроскопом гвозди, то есть не ставить для лендингов MODx, но иметь возможность использовать эту шаблонизацию, я написал отдельный класс шаблонизатора. И даже дал название — QuadBraces.

Создание шаблона

После загрузки папок с файлами мы можем начать создание нашего MODX шаблона. В админке нажмите на вкладку Elements слева, откроется панель с различными элементами сайта — шаблонами, чанками, переменными шаблона и другими. Нажмем на templates и увидим, что уже есть в наличии один базовый шаблон с названием Base Template. Если вы на него нажмете, то вы можете увидеть код данного шаблона. Видим HTML код с тегами ], ].

Эти тэги трансформируют статичный HTML/CSS код в динамичный MODX шаблон и мы собираемся узнать как его сделать и приложить к этому свои руки.

Давайте продолжим и сделаем наш шаблон. Для создания нового MODX Revolution шаблона нажмите правой кнопкой мышки Templates, а далее New Template.

Можете также нажать на иконке New Template:

В следующем окне задайте название для вашего шаблона и описание. Вы можете разместить его в категории для лучшего порядка вашего сайта. Ну и как вы разместите элементы сайта зависит от вас и вашего вкуса. Я обычно создаю категорию для основного шаблона, где я сохраняю все шаблоны и чанки для этого шаблон, далее делаю то же самое для навигации и так далее. Вы можете организовать свой сайт по своему.

Для создания категории, нажмите правой кнопкой мыши на Categories в закладке Elements.

Ну вот можно добавить код в наш новый шаблон. Начнем мы с создания шаблона для главной страницы. Сейчас я могу сказать, что дизайн главной страницы будет отличаться от дизайна внутренних страниц, поэтому я назову этот шаблон каким-то своим именем, например «7in1 Home». Код домашней страницы находится в файле index.html в папке с шаблонами, которую мы загрузили с Themeforest, поэтому открываем этот файл в редакторе (я использую Notepad++) и копируем его содержимое в наш новосозданный шаблон в MODX. Можно (и это на мой взгляд даже более удобнее) отредактировать вначале код вне MODX Revolution и только потом перенести отредактированный код исправленного шаблона, но исходя из целей данного урока, все эти действия проведём внутри редактора MODX.

Параметры выборки ресурсов

Эти параметры определяют, какие объекты будут получены.

Название
По умолчанию
Описание
&class
modResource
Класс получаемого объекта
&parents
Текущий ресурс
Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&depth
10
Глубина поиска дочерних ресурсов от родителя.
&resources

Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&templates

Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
&context

Ограничение выборки по контексту ресурсов.
&where

Массив дополнительных параметров выборки, закодированный в JSON.
&showHidden

Показывать ресурсы, скрытые в меню.
&showUnpublished

Показывать неопубликованные ресурсы.
&showDeleted

Показывать удалённые ресурсы.
&hideContainers

Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
&hideUnsearchable

Отключает вывод спрятанных от поиска ресурсов.
&select

Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {«modResource»:»id,pagetitle,content»}.
&leftJoin

Аналог SQL оператора left join
&rightJoin

Аналог SQL оператора right join
&innerJoin

Аналог SQL оператора inner join
&joinSequence
innerJoin,leftJoin,rightJoin
Порядок подключения таблиц, через зяпятую.
&sortby
pagetitle
Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()»
&sortdir
ASC
Направление сортировки: по убыванию или возрастанию.
&groupby

Указывает поле, по которому группируются результаты
&having

Используется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby

&limit

Ограничение количества результатов выборки. Можно использовать «0».
&offset

Пропуск результатов от начала.
&first
1
Номер первой итерации вывода результатов.
&last
Автоматически, по формуле (total + first — 1)
Номер последней итерации вывода результатов.
&loadModels

Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch2`.
&tvFilters

Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`

Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ.
&tvFiltersAndDelimiter
«,»
Разделитель для условий AND в параметре &tvFilters.
&tvFiltersOrDelimiter
«||»
Разделитель для условий OR в параметре &tvFilters.
&sortbyTV

Дополнительное поле, по которому нужно сортировать результаты

Может быть указано напрямую в параметре &sortby

&sortdirTV

Направление сортировки по дополнительному полю, указанному в &sortbyTV. Может быть указано напрямую в параметре &sortby

&sortbyTVType

Тип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата.
&checkPermissions

Укажите, какие разрешения нужно проверять у пользователя при выводе объектов.
&disableConditions

Отключает специфичные для класса modResource параметры выборки.
&fenomModifiers

список сниппетов-модификаторов через запятую, для подключения в Fenom. Подробности в соответствующем разделе.

Поля ресурса

Все ресурсы имеют следующие предопределенные поля:

1. Базовые поля ресурса MODX.

Имя Описание
id Идентификатор (порядковый номер) ресурса.
template Ссылка на шаблон, который будет использоваться для отображения этого ресурса.
published Включает публикацию ресурса во front-end.
pagetitle Заголовок (название) ресурса.
longtitle Расширенный заголовок ресурса.
description Описание ресурса.
introtext Краткая информация о содержимом ресурса. Может использоваться для его представления на главной странице или в некотором разделе.
alias URL-псевдоним по которому можно обратиться к этому ресурсу. Предназначен для сайтов, которые используют дружественные URL. Например, ресурс с псевдонимом «home» и типом контента «html» будет иметь URL «home.html» (если конечно же он не контейнер).
parent идентификатор (id) родительского ресурса.
link_attributes Предназначен для указания атрибутов, которые необходимо добавить к ссылке. Обычно используется сниппетом, генерирующим меню.
menutitle Заголовок, который может использоваться сниппетами для представления ресурса в меню.
menuindex Порядковый номер индекса ресурса в меню. Более высокие значения индекса указывают на то, что ссылку на ресурс необходимо расположить ниже.
hidemenu Убирает ресурс из выборки при формировании меню. Обычно используется сниппетами, генерирующими меню.
content Контент ресурса.

2. Поля, осуществляющие настройку ресурса.

Имя Описание
isfolder Указывает, является ли ресурс «Контейнером». Если это так, то ресурс будет вместо суффикса иметь слеш (/). Это касается только тех сайтов, которые используют дружественные URL.
searchable Определяет, необходимо ли ресурс включать в результаты поиска.
cacheable Определяет, необходимо ли ресурс кешировать.
createdby Содержит идентификатор (id) пользователя, который создал ресурс.
editedby Содержит идентификатор (id) пользователя, который последним редактировал этот ресурс.
deleted Определяет, отмечен ли ресурс на удаление или нет.
deletedby Содержит идентификатор (id) пользователя, который отметил ресурс на удаление.
publishedby Содержит идентификатор (id) пользователя, который опубликовал ресурс.
createdon Содержит дату создания ресурса пользователем.
publishedon Содержит дату публикации ресурса.
editedon Содержит дату последнего редактирования документа.
pub_date Содержит дату, начиная с которой ресурс будет опубликован.
unpub_date Содержит дату, начиная с которой ресурс будет снят с публикации.

Тайминг

В MODX есть несколько тегов синхронизации:

  • — Время запроса — показывает, сколько времени MODX потратил на общение с базой данных
  • — Количество запросов — Показывает, сколько запросов к базе данных выполнено MODX
  • — Время разбора — показывает, сколько времени понадобилось MODX для разбора страницы
  • — Общее время — показывает общее время, затраченное на анализ / рендеринг страницы.
  • — Источник — показывает источник страницы, является ли база данных или кеш
  • — Использование памяти — Показывает общий объем памяти, занятый для анализа / рендеринга страницы.

Дополнительная Помощь

Поскольку синтаксис тегов проблематичен для многих новичков, существуют инструменты, которые помогут выделить проблемы. Проверьте плагином SyntaxChecker.

Что нового в MODX 2.7.1?

Версии Evolution и Revolution получают обновления отдельно. Апдейты для Evo создают участники пользовательского сообщества. Найти их можно на русскоязычном форуме движка. Обновления для Revo выпускают разработчики движка, которые сообщают о релизе в блоге на официальном сайте. 

Последняя версия MODX Revolution — 2.7.1 (14 февраля 2019 года). В этом апдейте много внимания уделено исправлению ошибок, обнаруженных в предыдущих редакциях. Если же говорить о крупных нововведениях, то последним было появление визуального редактора с интерфейсом drag-and-drop, который разработчики назвали Fred. Это произошло также в феврале 2019 года. 

Цель внедрения Fred — сделать создание сайтов более эффективным и увлекательным. Визуальный редактор MODX с точки зрения гибкости и мощности превосходит аналогичные решения на других CMS. Кроме встроенных инструментов кастомизации он предлагает поддержку любых HTML-фреймворков, включая Bootstrap и Foundation. Теперь макеты, в которых ранее приходилось настраивать десятки параметров, могут быть созданы с помощью визуальных средств, понятных на интуитивном уровне.

У макетов, используемых для создания страниц, и элементов интерфейса есть собственные настройки, которые позволяют, например, с помощью ползунка указать, какое количество статей должно отображаться на странице в блоге. Fred также поддерживает плагины для добавления новых возможностей кастомизации. В следующих релизах разработчики обещают сделать создание расширения для визуального редактора более простым, в том числе благодаря подробной документации. 

На Evolution таких больших изменений в функциональности нет, но апдейты тоже выходят достаточно часто. Ветка Evolution CMS 1.4.x получает исправление ошибок и критических проблем с безопасностью, а также доработку совместимости с Evolution CMS 2.x. Это новая версия системы, созданная пользователями на основе оригинального движка, с добавлением компонентов фреймворка Laravel.  

Laravel выбран для интеграции из-за обширной документации, активной поддержки и большого количества готовых пакетов, которые можно будет использовать на Evolution 2.0. При этом старые конструкции продолжат поддерживаться, однако не будут раскрывать весь потенциал новой системы. Ветка 2.x только начинает своё развитие и доступна в альфа-версии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *