Modx: лучшая cms, которой вы никогда не пользовались
Содержание:
- Новый релиз пакета modLivestreet 0.5.0-rc full
- Все теги
- Evolution CMS 2.0 на компонентах Laravel 6.0 — естественная эволюция MODX Evolution
- Самый популярный миф — в новой ветке все изменилось и по-старому уже не будет.
- Получение полей по ID ресурса
- manager/
- Основные возможности плагина и особенности
- Построение конечных точек API
- Построение тега MODX
- Доступные события
- Для новичков и тех, кто разбирается
- Подключение к базе данных
- QuadBraces — по мотивам парсера MODx
- Создание шаблона
- Параметры выборки ресурсов
- Поля ресурса
- Тайминг
- Что нового в MODX 2.7.1?
Новый релиз пакета 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 браузера, как можно догадаться, заключается в шифровании трафика. Это означает, что при попытке пользователя войти на сайт, на сервер, где она располагается, отправляются другие данные, зашифрованные или измененные. Соответственно, подлинная информация не будет доступна третьим лицам.
Процедура может быть выполнена несколькими способами:
- Замена или шифрование IP адреса. В результате такого подхода, фактический адрес пользователя заменяется на другой, а сайт получит входящую информацию с прокси-сервера.
- Ускорение получения доступа. Данная функция работает исключительно тогда, когда персональный компьютер пользоваться располагается в непосредственной близости с используемым прокси-сервером.
- Разблокировка. Эта возможность – своеобразный аналог замены 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 (веб-пользователя) были удалены
- OnBeforeCacheUpdate
- OnBeforeChunkFormDelete
- OnBeforeChunkFormSave
- OnBeforeDocFormDelete
- OnBeforeDocFormSave
- OnBeforeEmptyTrash
- OnBeforeManagerLogin
- OnBeforeManagerLogout
- OnBeforeManagerPageInit
- OnBeforePluginFormDelete
- OnBeforePluginFormSave
- OnBeforeSaveWebPageCache
- OnBeforeSnipFormDelete
- OnBeforeSnipFormSave
- OnBeforeTempFormDelete
- OnBeforeTempFormSave
- OnBeforeTVFormDelete
- OnBeforeTVFormSave
- OnBeforeUserActivate
- OnBeforeUserFormDelete
- OnBeforeUserFormSave
- OnBeforeWebLogin
- OnBeforeWebLogout
- OnCacheUpdate
- OnCategoryBeforeRemove
- OnCategoryBeforeSave
- OnCategoryRemove
- OnCategorySave
- OnChunkBeforeRemove
- OnChunkBeforeSave
- OnChunkFormDelete
- OnChunkFormPrerender
- OnChunkFormRender
- OnChunkFormSave
- OnChunkRemove
- OnChunkSave
- OnContextBeforeRemove
- OnContextBeforeSave
- OnContextFormPrerender
- OnContextFormRender
- OnContextRemove
- OnContextSave
- OnDocFormDelete
- OnDocFormPrerender
- OnDocFormRender
- OnDocFormSave
- OnDocPublished
- OnDocUnPublished
- OnEmptyTrash
- OnFileManagerBeforeUpload
- OnFileManagerUpload
- OnFileManagerDirCreate
- OnFileManagerDirRemove
- OnFileManagerDirRename
- OnFileManagerFileCreate
- OnFileManagerFileRemove
- OnFileManagerFileRename
- OnFileManagerFileUpdate
- OnFileManagerMoveObject
- OnHandleRequest
- OnInitCulture
- OnLoadWebDocument
- OnLoadWebPageCache
- OnManagerAuthentication
- OnManagerLogin
- OnManagerLoginFormPrerender
- OnManagerLoginFormRender
- OnManagerLogout
- OnManagerPageAfterRender
- OnManagerPageBeforeRender
- OnManagerPageInit
- OnMODXInit
- OnPageNotFound
- OnPageUnauthorized
- OnParseDocument
- OnPluginBeforeRemove
- OnPluginBeforeSave
- OnPluginEventRemove
- OnPluginFormDelete
- OnPluginFormPrerender
- OnPluginFormRender
- OnPluginFormSave
- OnPluginRemove
- OnPluginSave
- OnPropertySetBeforeRemove
- OnPropertySetBeforeSave
- OnPropertySetRemove
- OnPropertySetSave
- OnResourceAutoPublish
- OnResourceGroupBeforeRemove
- OnResourceGroupBeforeSave
- OnResourceGroupRemove
- OnResourceGroupSave
- OnRichTextBrowserInit
- OnRichTextEditorInit
- OnRichTextEditorRegister
- OnSiteRefresh
- OnSiteSettingsRender
- OnTemplateVarBeforeRemove
- OnTemplateVarBeforeSave
- OnTemplateVarRemove
- OnTemplateVarSave
- OnUserActivate
- OnUserBeforeRemove
- OnUserBeforeSave
- OnUserChangePassword
- OnUserFormDelete
- OnUserFormSave
- OnUserNotFound
- OnUserRemove
- OnUserSave
- OnWebAuthentication
- OnWebLogin
- OnWebLogout
- OnWebPageComplete
- OnWebPageInit
- 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 только начинает своё развитие и доступна в альфа-версии.







