Урок 1. вступление
Содержание:
- Чему Вы научитесь (содержание курса)
- Связка MODx Revolution + LiveStreet. Часть 2 (Дубль два)
- Что такое xPDO?
- manager/
- Поля ресурса
- Изменение размера слайда в PowerPoint
- Все теги
- Как изменить права пользователя на Windows 10
- Подключение к базе данных
- Правила оформления документации
- Построение конечных точек API
- Что нового в MODX 2.7.1?
- Дизайн и работа с шаблонами (темами)
- Модификаторы условия
- pdoTools — набор быстрых сниппетов и библиотека
- Назначение шаблона
Чему Вы научитесь (содержание курса)
Основы (без видео)
- MODX что это такое
- Идеология и основные определения MODX Revolution
- Где можно получить помощь с MODX
- Структура каталогов MODX
- Форматирование дат и времени в MODX
- Модификаторы MODX и фильтры phx
Практика (с видео)
- Установка MODX Revolution
- MODX админка — обзор, как зайти
- Настройка MODX после установки
- Дополнения (плагины, пакеты) для MODX Revolution
- MODX безопасность: убираем ошибку modx каталог ядра в открытом доступе
- Перенос HTML шаблона в MODX Revo
- Основной синтаксис MODX Revo (без видео)
- MODX fenom — документация и примеры (без видео)
- Создание дополнительного источника файлов в MODX Revo
- MODX чанки (chunks)
- MODX сниппеты (snippet)
- Modx TV (дополнительные поля)
- MODX настройка ЧПУ
- MODX htaccess
- robots.txt для MODX Revo
- PdoSitemap документация | создание sitemap.xml в MODX Revo
- Modx ClientConfig — пользовательские системные настройки
- MODX TinyMCE RTE настройка визуального редактора
- SEO оптимизация MODX
- MODX SEO Pro — документация
- MODX https настройка
- Создание дополнительных MODX шаблонов
- Создание страниц ошибок 404, 401, 503 в MODX
- MODX pdoCrumbs — создание хлебных крошек
- MODX FormIt — документация по созданию форм обратной связи
- MODX ajaxform — документация
- Добавление страниц и разделов
- Создание слайдеров при помощи MIGX, BanerY и pdoResources
- Создание HTML карты сайта в MODX — для людей
- Как в MODX Revo избавиться от спама с FormIt, AjaxForm
- pdoMenu — документация и примеры создания меню в MODX
- phpThumb — документация
- pdoResources — документация и примеры вывода ресурсов
- MODX — продвинутое портфолио с фильтром по категориям
- Создание блога в MODX при помощи Tickets
- Вывод ресурсов при помощи pdoPage с разбивкой на страницы
- SimpleSearch — поиск по сайту
- Реализация поиска по сайту при PdoTools
- Раздел управления виджетами
- Вывод соседних документов в MODX Revo
- MODX теги — тегирование для ресурсов, при помощи MIGX.
- MODX — вывод списка похожих записей (автоматическая перелинковка)
- MODX pdoField — получение и вывод полей родителя (ей)
- MODX MinifyX — ускоряем сайт и уменьшаем нагрузки на сервер
- Создание RSS ленты на MODX Revo
- Настройка прав доступа
- Обновление до актуальной версии
Дополнительная документация по дополнениям
- Ace — подсветка кода в MODX и не только
- MIGX | MODX Revo
- MODX Tickets настройки, документация
- Документация по пакету MODX Revo — MetaX
- MODX Collections
Дополнительно (без видео)
- MODX action_err_ns — исправляем ошибку
- MODX сниппет для автоматической генерации favicon
- Перенос MODX Revo на хостинг (локальный веб-сервер) или с домена на домен
- MODX cборка для быстрого старта
- MODX SEO-strict — Заменяем base href на link rel canonical
- Якорные ссылки в MODX Revolution
- Авторизация через соц сети при помощи HybridAuth
- Создание галереи (Bootstrap 3+Gallery+fancyBox+Mosaic Flow)
- Изменение длины (varchar) у поля из minishop2
- Дополнительные опции minishop2 — создание, кастомизация вывода и вывод единиц измерения
- minishop2 — всплывающее окно после нажатия на кнопку
- easyComm — создание отзывов для товаров в MODX Revo
Содержание курса будет изменятся по мере появления новых уроков.
Настройка MODX
Установка MODX Revolution >
Связка MODx Revolution + LiveStreet. Часть 2 (Дубль два)
Прошлый мой топик закритиковали из-за отсутствия полностью задокументированного и оформленного решения, отправив меня все это дело переделывать, потому и переписываю топик с нуля, так как и решение с нуля все переделано.
Думал за часик все оформлю, а в итоге все переписал единым пакетом, полностью переосмыслив логику. Если так посмотреть, то с этим плагином MODX может работать не только с LiveStreet, а скорее всего много с чем, как бы выполняя роль шлюза (или nginx-а, чтобы понятней было).
Итак, вот готовый пакет для MODX: goo.gl/X6HCd (Extra залил на modx.com, но пока на модерации. Как только запустят, обновлю ссылку)
Что требуется для работы?
Отдельно MODX
Отдельно LiveStreet (можно в какой-нибудь внутренней папке в MODX (но не на одном уровне с livestreet.url_prefix, а то могут возникнуть сложности с подменой УРЛ-ов), можно за пределами MODX_DOCUMENT_ROOT (но лишь бы на одном сервере и доступ к файловой системе был)).
В общем ставим это все (или берем готовые сайты), устанавливаем на MODX данные пакет, правим (если надо) системные конфиги MODX пространства имен livestreet.
Это все просто.
Чуууточку сложнее вот это сделать:
Что такое xPDO?
xPDO (eXtension PDO) — это объектно-реляционный мост (ORB), положенный в основу системы CMS MODX Revolution. xPDO представляет собой библиотеку, построенную на основе PDO. Основная цель этой библиотеки – это предоставить разработчикам объектно-ориентированный программный интерфейс (API), который позволит более просто и эффективно создавать сложные веб-приложения. В основу xPDO положены объектные модели для различных платформ баз данных. Представляет из себя объектная модель xPDO обычный XML-файл. Например, для СУБД MySQL, данный файл называется . Найти его в системе CMS MODX Revolution можно по следующему пути: . Если данный файл открыть, то можно увидеть, что он состоит из объектов (классов). Каждый объект (класс) представляет собой некоторую таблицу, а свойства этого объекта – его столбцы.
Объектов (таблиц) в MODX Revolution достаточно много, но наиболее часто используются при написании снипетов и плагинов следующие: (ресурсы), (чанки), (пользователи), (профиль пользователя), (значение дополнительных полей), (дополнительные поля).
Примечание: в скобках на вышеприведённой схеме указаны названия таблиц без префикса. Каждая таблица представляет собой в xPDO модели тот или иной объект.
Как уже было отмечено выше, каждый объект (класс) имеет свойства (поля). Свойство — это столбец таблицы. Например, объект (ресурс) состоит из свойств (первичный ключ ресурса), (заголовок), (описание), (содержимое ресурса), (id пользователя, который опубликовал ресурс) и т.д.
Кроме этого, каждый объект может иметь связи (alias) с другими объектами. Некоторые из них приведены на схеме. Например, если вам нужно получить имя пользователя, который опубликовал ресурс, то необходимо воспользоваться отношением, имеющим alias . Данное отношение определяет то, как данные представленные объектом modResource связаны с данными объекта modUser посредством локального (publishedby) и внешнего ключа (id). Каждое отношение имеет мощность. Например, у отношения с псевдонимом мощность равна 1. Это означает то, что отношение связвает объект только с одним объектом .
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, чтобы использовать несжатую версию во время разработки. Просто обязательно переключите их потом!
Поля ресурса
Все ресурсы имеют следующие предопределенные поля:
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 | Содержит дату, начиная с которой ресурс будет снят с публикации. |
Изменение размера слайда в PowerPoint
Все теги
По мере того, как вы будете лучше понимать, как работают шаблоны 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 |
Чтобы уточнить — он устанавливается только тогда, когда пользователь устанавливает будущую дату публикации в поле «Опубликовать в». И когда документ действительно опубликован, он обнуляется. Поле опубликовано всегда содержит самую последнюю дату, когда ресурс изменил неопубликованную форму на опубликованную (или дату, когда новый документ был сохранен с проверкой публикации).
Как изменить права пользователя на Windows 10
Существуют различные программы и утилиты, которые позволяют изменить права пользователя. Но, мы не будем прибегать к сторонним помощникам, а воспользуемся стандартными способами, так как это легче, удобнее и безопаснее.
Способ №1. Использование утилиты «Учетные записи пользователей»
Пожалуй, самый популярный и стандартный способ для всех пользователей. Почему для всех пользователей? Потому что простой в выполнении и не требует от пользователей набора команд.
Откройте Меню «Пуск» icon-windows, а затем нажмите на кнопку «Все приложения».
После этого отыщите и разверните папку «Служебные — Windows», а затем нажмите на утилиту «Панель управления».
В окне панели управления, укажите в разделе «Просмотр» — «Категория», после чего кликните по надписи «Изменение типа учетной записи».
Теперь кликните по учетной записи для которой необходимо изменить права.
В новом окне нажмите на кнопку «Изменение типа учетной записи».
После этого укажите маркер на «Администратор» и нажмите на кнопку «Изменение типа учетной записи». Если в вашем случае необходимо снять права администратора с учетной записи, то укажите маркер на «Стандартная».
В результате этого, вы увидите, что в описании к учетной записи появилась группа «Администратор». Это свидетельствует о наличии прав администратора.
Способ №2. Через функцию «Параметры системы»
Данный способ также является популярным, как в случае с первым способ. Тем не менее, здесь необходимо прибегнуть к более сложным манипуляциям.
Откройте Меню «Пуск» icon-windows, а затем нажмите на кнопку «Параметры». Для быстрого вызова окна «Параметры», воспользуйтесь сочетанием клавиш Windows +I.
В новом окне кликните по разделу «Учетные записи».
Теперь перейдите на вкладку «Семья и другие пользователи».
Кликните по учетной записи пользователя для которой вы хотите изменить права. Появится всплывающее меню, нажмите на кнопку «Изменить тип учетной записи».
В новом окне, укажите «Администратор», а затем нажмите на кнопку «OK». Если вы хотите снять полномочия администратора с учетной записи, то выберите «Стандартный пользователь».
В результате этих действий, вы сможете заметить надпись «Администратор» возле учетной записи. Это означает, что теперь учетная запись имеет права администратора.
Способ №3. При помощи командной строки (cmd)
Этот способ гораздо сложнее, по сравнению с предыдущими. Если вы новичок и не имеет опыта работы с командной строкой, то воспользуйтесь более простыми способами, которые описаны выше.
Запустите командную строку от имени администратора, для этого откройте Меню «Пуск» icon-windows, а затем нажмите на кнопку «Все приложения».
После этого отыщите и разверните папку «Служебные — Windows», а затем нажмите правой кнопкой мыши на утилиту «Командная строка». Во всплывающем меню выберите пункт «Запуск от имени администратора».
- В командной строке вам необходимо ввести команду, которая позволяет добавить пользователя в группу администраторов.
- Для русскоязычных Windows — net localgroup Администраторы Имя пользователя /add
- Для англоязычных Windows — net localgroup Administrators Имя пользователя /add
После набора команды, нажмите на кнопку Enter. В результате этого вы увидите уведомление о том, что команда выполнена успешно. На этом закрывайте командную строку.
Способ №4. Использование оснастки «Локальные пользователи и группы»
Благодаря этому способу, вы можете легко управлять группами прав для всех учетных записей Windows. Несомненно, данный способ требует определенных навыков и знаний, но если прислушиваться к инструкциям ниже, то справиться даже новичок.
Запустите командную строку, для этого нажмите на сочетание клавиш Windows +R. В окне командной строки введите команду lusrmgr.msc и нажмите на кнопку «OK».
В окне «Локальные пользователи и группы» кликните по папке «Пользователи».
Теперь нажмите правой кнопкой мыши по учетной записи для которой необходимо изменить права. Во всплывающем меню нажмите на кнопку «Свойства».
В окне свойств, перейдите на вкладку «Членство в группах», а затем нажмите на кнопку «Добавить…».
В окне групп, впишите «Администраторы», либо «Adminstrators» (в некоторых случаях), а затем нажмите на кнопку «OK».
После этого нажмите на группу «Пользователи», а затем кликните по кнопке «Удалить».
Теперь учетная запись имеет полноценные права администратора. Для сохранения всех изменений, нажмите на кнопку «Применить» и «OK».
Ну что же, сегодня мы рассмотрели разные способы, которые позволяют изменить учетную запись на Windows 10. Надеемся, что один из способов помог вам в этом не простом деле!
Подключение к базе данных
В этом месте вы заполняете необходимую информацию о вашей базе данных.
Добавляете имя вашей базы данных и 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 драйвер вашего сервера будет работать и не будет ошибки когда нажмете Проверить соединение с сервером баз данных. В случае если это все таки приключалось это говорит о том, что у вас имеются осложнения соединения с базой данных, аутентификацией или же выбором базы данных. Когда исправите все ошибки жмите Назад, для того чтобы возвратиться на предшествующую страничку и затем Далее, для того, что бы вернуться на страничку опций подключения к базе данных.
Правила оформления документации
Структура
Формат репозитория определяется следующей структурой:
- Языковая версия
- Раздел
- Тема
- Дальше структура определяется в зависимости от темы
- Чтобы указать порядок директорий и файлов, мы используем числовые префиксы.
Вот путь к файлу с описанием сниппета HybridAuth на русском:
Заголовки
Для заголовков мы используем хештэги ## и между ними и текстом ставим пробел. Например: ## Заголовок
Заголовки должны быть не больше h2, то есть, 2 решетки ##:
- h2 = ##
- h3 = ###
- h4 = ####
Между заголовком и текстом сверху оставляется одна пустая строка. Между заголовком и текстом снизу отступов делать не нужно.
Ссылки
Ссылки на документы нужно проставлять в конце страницы, чтобы их было удобно искать и обновлять. В markdown это делается так:
Помимо прочего, это позволяет использовать одну ссылку несколько раз на странице:
Ссылки на страницы репозитория необходимо указывать от корня, с ведущим слешем, тогда по ним можно переходить прямо на GitHub:
Проще всего открывать нужную страницу на GitHub и копировать адрес из url.
Ссылки на изображения можно вставлять сразу в тексте. Для указания изображений лучше использовать сервис на file.modx.pro (требует авторизацию).
Он автоматически сгенерирует уменьшенную копию и код markdown для вставки.
Выделение
Cистемные параметры нужно выделять жирным текстом, например: **¶metr** будет выглядеть, как ¶metr.
Плейсхолдеры оборачиваются в одинарные обратные апострофы. Например: `]` будет выглядеть, как .
Для обрамления кода нужно использовать 3 обратных апострофа «` перед секцией кода, и после:
Сам код начинается с новой строки. Пустые строки до и после кода — по желанию.
Таблицы
Вы можете использовать таблицы для удобного отображения различных данных, например параметров какого-то сниппета:
First Header | Second Header |
---|---|
Content Cell | Content Cell |
Content Cell | Content Cell |
Построение конечных точек 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 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 только начинает своё развитие и доступна в альфа-версии.
Дизайн и работа с шаблонами (темами)
На MODX нет готовых шаблонов, поэтому просто найти подходящую тему и за 5 минут получить сайт не получится. Хорошая новость — сделать дизайн можно на основе любого HTML-макета. Плохая новость — это невозможно без навыков работы с HTML и CSS. Более того, для полноценной настройки придётся дополнительно изучить собственный синтаксис тегов MODX.
В недавнем обновлении версии Revolution появился визуальный редактор Fred с интерфейсом drag-and-drop. Он предоставляет примерно тот же пользовательский опыт, что и конструкторы сайтов. Вы можете настраивать страницы вручную, перетаскивая элементы и меняя их внешний вид. Однако для глубокой кастомизации в любом случае потребуется редактирование файлов шаблонов, которое невозможно без знания HTML/CSS/JavaScript.
Работы с кодом вообще будет очень много, и избежать её не получится. Визуальный редактор позволяет выполнить базовые действия вроде изменения заголовка или текста на странице. Если речь идёт о динамических элементах, то придётся лезть в документацию и смотреть теги MODX. В итоге на создание и настройку первого сайта на этой CMS вам придётся потратить очень много времени или денег для привлечения специалистов.
Модификаторы условия
Модификатор | Описание | Пример |
---|---|---|
if,input | if — задает дополнительное условиеinput — добавляет в тег обратываемые данные |
[[+phx:input=`/assets/img/photo.gif`]] — добавляем в тег phx входное значение, следующим модификатором, например, можно обработать изображение. Или [[+phx:input=`/assets/img/photo.gif`:contains=`photo.gif`:then=`da`:else=`net`]] проверить есть ли в пути определенная последовательность символов. ]`:ne=`2`:then=`da`:else=`net`]] — если id-ресурса = 1 и не равно 2, выводим «da», или же «net» |
or,and | or — условие «ИЛИ» and — условие «И» |
]`:is=`2`:then=`da`:else=`net`]] — если id-ресурса = 1 или = 2, выводим «da», или же «net». ]`:ne=`2`:then=`da`:else=`net`]] — если id-ресурса = 1 и не равно 2, выводим «da», или же «net» |
isequalto, isequal, equalto, equals, is, eq | Если тег равен модификатору, используется с «then» и «else.» |
] — если id-ресурса = 1, выводим «da», или же «net» |
notequalto, notequals, isnt, isnot, neq, ne | Если тег не равен модификатору, используется с «then» и «else». |
] — если id-ресурса не равно 1, выводим «da», или же «net» |
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte | Если тег больше или равен модификатору, используется с «then» и «else». |
] — если id-ресурса больше или равен 1, выводим «da», или же «net» |
isgreaterthan, greaterthan, isgt, gt | Если тег больше модификатора, используется с «then» и «else». |
] — если id-ресурса больше 1, выводим «da», или же «net» |
equaltoorlessthan, lessthanorequalto, el, le, islte, lte | Если тег меньше или равен модификатору, используется с «then» и «else». |
] — если id-ресурса меньше или равно 10, выводим «da», или же «net» |
islowerthan, islessthan, lowerthan, lessthan, islt, lt | Если тег меньше модификатора, используется с «then» и «else». |
] — если id-ресурса меньше 10, выводим «da», или же «net» |
contains | Если тег содержит модификатор, используется с «then» и «else». |
] — если в теге содержится фраза «Сэ́мюэл Кле́менс» выводим «Марк Твен» |
containsnot | Если тег не содержит модификатор, используется с «then» и «else». |
] — если в теге не содержится фраза «Сэ́мюэл Кле́менс» выводим «Кто-нибудь еще» |
hide | Если предыдущий модификатор возвращает положительное значение («then»), то не выводим обработанный тег. |
] — если id-ресурса = 10, ничего не выводим |
show | Если предыдущий модификатор возвращает положительное значение («then»), то выводим обработанный тег. |
] — если id-ресурса = 10, выводим. |
then | Условие, если тег соответствует модификатору, выводим сообщение, иначе ничего не выводим |
] — если id-ресурса = 10, выводим «ept». |
else | Условие, если тег не соответствует модификатору, выводим сообщение. Используется только в связке с «then» |
] — если id-ресурса = 10, выводим «ept» иначе «nooo». |
select | Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать «else», например если значение
] — не подходит под шаблон select |
] — если тег ] — выводит «0», значит выводим «ВЫКЛ», если тот же тег равен «1» выводим «ВКЛ», если «2» выводим «ХЗ», если тег не подходит нашей выборке, то выводим «Ошибка». |
in | Работает аналогично php in_array, если тег совпадет с одним из элементов модификатора (разделяются они запятыми), то выводим then, если не совпало else |
]`:else=`пробел`]] — если тег ] (текущий шаблон) — равен «3» или «4», значит выводим ] , если не равен, выводим else. |
pdoTools — набор быстрых сниппетов и библиотека
Хочу представить вашему вниманию свою разработку по быстрому выводу контента на сайтах MODX Revolution.
Как известно, эта система целиком построена на собственной ORM под названием xPDO. Она очень упрощает работу, позволяет писать один универсальный код для разных БД, и еще много чего.
К сожалению, она не может похвастаться скоростью вывода (как, наверное, вообще любая ORM), поэтому я попробовал совместить её плюсы с обычным PDO, добавить лучшую работу с чанками и сделать удобную библиотеку для MODX.
Основные особенности:
- Быстрая работа с БД. Все запросы составляются на xPDO, а выбираются без объектов — на PDO.
- Предварительная обработка простых плейсхолдеров в чанках. Парсер MODX разбирается только со сложными вызовами.
- Код чанков можно указывать прямо при вызове сниппета, загружать обычным образом или из статичных файлов.
- Правильная сортировка, подготовка, обработка и вывод ТВ параметров.
- Ведение подробного журнала работы сниппета с отметками времени, для отладки.
- Удобная загрузка классов и множество функций, которые можно применять в своих разработках.
- В комплекте 8 универсальных сниппетов, которые дают хороший базис разработчику.
Начну с последнего пункта.
Назначение шаблона
Итак мы закончили портирование шаблона, давайте назначим шаблон страницы и посмотрим, что же мы наделали. Для определения шаблона для страницы нам необходимо перейти на вкладку Resource и открыть ресурс для которого мы хотим определить шаблон (в нашем случае это страница Home). Если вы нажмете на поле Uses Template, то в выпадающем списке можно будет выбрать новый только что созданный нами шаблон.
После выбора шаблона нажмите Save появится сообщение о том, действительно ли вы хотите изменить шаблон, подтверждаем
Важность этого прояснится после того, как мы сделаем разные шаблоны, у которых будет множество чанков и переменных шаблона и которые мы по-разному разместим, поэтому вам необходимо быть уверенным в правильности выбора шаблона, ресурс для которого вы редактируете в данный момент
После сохранение, мы можем просмотреть страницу и увидеть как она теперь выглядит. Вот снимок экрана, на котором видна верхняя часть страницы:
Вот нижняя часть: