Modx

Содержание:

Чему Вы научитесь (содержание курса)

Основы (без видео)

  • 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-клуб в Москве

Итак, сразу о главном: объявляю об открытии MODX-клуба в Москве:-)
Базироваться будем в анти-кафе YoStudio. Заведение просто замечательное! У нас будет свой зал на 25 человек, большие столы (которые можно расставить как будет удобней), Wi-Fi. В общем все необходимое. На фотографии зал кажется голым, но это просто неудачная фотография. Там есть окна и шкаф с книгами и канцелярией, а так же стенд для презентаций.
Предполагаются мероприятия следующего формата:

  • Обучающие семинары для конечных пользователей (основы управления MODX-сайтами и т.п.)
  • Курсы повышения квалификации MODX-программистов
  • Просто приятные и полезные встречи, чтобы поболтать о любимой Системе.

Загрузка файлов шаблона

Любой шаблон содержит в себе много файлов – css файлов, яваскрипт, рисунков, флеш файлов… Все это нужно где-то хранить на вашем сервере, чтобы ваш шаблон имел к этим файлам доступ. Я предпочитаю хранить все файлы, которые относятся к шаблону в середине директории assets. Вы можете положить куда угодно и установить соответствующие пути в вашем шаблоне.

Распакованные файлы шаблона имеют приблизительно вот такую файловую структуру:

Таким образом 1 шагом в нашей разработке шаблона является копирование трех папок с файлами шаблона на сервер, это папки sample-data/, scripts/ и styles/. Я создал папку в середине assets и назвал ее templates, а также я создал папку 7in1, в которую поместил вышеназванные папки с файлами шаблона. Если вы запутались, то посмотрите на картинку и все станет понятно:

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

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

После загрузки папок с файлами мы можем начать создание нашего 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.

Облицовка имитацией бруса с тыльной стороны влажная

Каждая дощечка современных профилированных пиломатериалов (в первую очередь, сюда отнесём вагонку, блокхаус и фальшбрус) имеет сзади специальные канавки или пазы для вентилирования. Однако, если стены коттеджа выполнены из «дышащего» материала, и переток водяных паров из помещений наружу ничем не остановлен – тогда влага может выпадать в виде конденсата на тыльной стороне фасадной обшивки, увлажняя в том числе утеплитель. Поэтому в таких случаях после крепления полотен ветрогидрозащиты на каркас набивается брусок контробрешётки сечением от 40Х40 мм до 50Х70 мм.

Оптимальная величина вентиляционного зазора определяется размерами стены, в основном делают от 35 до 70 мм. В любом случае, для нормальной конвекции ещё нужно обустроить на вентфасаде приточные (внизу) и вытяжные (вверху) продухи.

Получение обработанного содержимого

Если внутри ресурса содержимое формируется из чанков и сниппетов, а требуется получить сформированный html код, то воспользуйтесь этим решением:

$content = $resource->get('content');
$modx->resource = & $resource;

if (!empty($content)) { 
    // get the max iterations tags are processed before processing is terminated 
    $maxIterations= (integer) $modx->getOption('parser_max_iterations', null, 10);
    // parse all cacheable tags first 
    $modx->getParser()->processElementTags('', $content, false, false, '', array(), $maxIterations);
    // parse all non-cacheable and remove unprocessed tags 
    $modx->getParser()->processElementTags('', $content, true, true, '', array(), $maxIterations);
}  

В переменной «$content» будет готовая html разметка.

Кастомные события

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

  • name — уникальное имя события.
  • service — неудачная попытка сгруппировать события для определенных областей. 1,2,4,5,6 загружаются внутри менеджера, тогда как 1,3,4,5,6 загружаются вне менеджера. (см. )
  • groupname — Используется для визуальной группировки событий в менеджере MODX (отображается как вкладка плагина).

Создание события с использованием API MODX будет выглядеть примерно так

Тогда ваш код может вызвать событие по имени:

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

Система доступа к документам для MODX

Из песочницы

Всем хорошего дня.
Пишу в данный момент для modx с использованием индивидуальных документов для каждого обычного пользователя.
Поскольку забивать этими документами админку не хотелось (если с сайтом все нормально будет, их там будет многовато и админка начнет тормозить), решил вынести их в отдельную таблицу БД, с выводом через один ресурс.
Итак, рассмотрим наши требования к документу (по крайне мере, у меня были такие):

  1. У документа должны быть заголовок и содержание;
  2. У документа должен быть тип (для более простого поиска документов одного типа);
  3. У владельца документа всегда есть доступ к его редактированию и просмотру;
  4. У владельца сайта и его юристов есть произвольный доступ к любому из документов;
  5. Владелец сайта и те, кому он это разрешил, должны иметь возможность выдавать нужным им пользователям права на просмотр и редактирование произвольного документа;
  6. Произвольный зарегистрированный пользователь может получить право на только просмотр либо также и редактирование произвольного документа на время либо сразу навсегда.

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

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

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

Оптимизация (SEO) и продвижение

Одна из особенностей MODX — чистый код, лишённый громоздких элементов. Это следствие использования собственного синтаксиса тегов и отличная характеристика для поискового продвижения. Кроме того, при создании страниц система автоматически создаёт ЧПУ — адреса в виде понятных пользователям слов, которые тоже нравятся поисковикам и быстро индексируются. Также в базовой комплектации MODX реализовано создание карты сайта со ссылками на все разделы, которая тоже повышает эффективность индексации.

Для оптимизации CMS пользователи рекомендуют выполнить следующие шаги:

  • Включить «Дружественные URL», чтобы при создании страницы сразу формировались ЧПУ.
  • Добавить расширение Translit, чтобы кириллические названия корректно отображались в адресе на латинице. 
  • Указать в файле .htaccess, как поисковые роботы будут индексировать сайт.
  • Установить счётчик аналитики от Яндекс или Google. 

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

«Traditional» или «Advanced»?

Открыв страничку загрузки, вы сможете увидеть 2 варианта «Traditional» и «Advanced». Какому же отдать предпочтение?

Traditional является скомпилированным пакетом из репозитория Git. Вам остается лишь элементарно распаковать файлы на выбраный сервер и выполнить все шаги руководства по установке. Основная масса пользователей традиционно используют именно данную версию.

Advanced является пакетом по размеру практически в два раза менее, нежели «Traditional», так как содержимое «ядра» заархивировано. MODx Setup распаковывает данный пакет в ходе инсталляции. Данный вариант советуется применять лишь в том случае, в случае если вы намереваетесь смешать каталоги с ядром, управлением и коннекторами (connectors), и в случае если вы располагаете SSH-доступ и понимаете, как скорректировать права доступа к папкам. В случае если вы избираете данный вариант, перейдите к разделу «Advanced Installation».

Примечание: Так как я избрал вариант Traditional, в следующем изложении речь пойдет лишь о данном варианте. В случае если вас интересуют остальные — почитайте оригинальную документацию.

Поля ресурса

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

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 Содержит дату, начиная с которой ресурс будет снят с публикации.

Построение конечных точек 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, пришло время приступить к реальной разработке и заставить ее работать так, как вы хотите.

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

Это не исчерпывающий список, так как события все еще документируются. Спасибо за терпеливость. События 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

Самые ходовые (популярные) фильтры и модификаторы MODX

условия if else

Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт.

Проверка на значение: Если id равен 7, то выводим значение, иначе выполняем другое действие.

Проверка на пустоту (empty)

К примеру у нас есть TV (дополнительное поле) «keywords» и соотвественно мета тег к нему и мы не хотим выводить его в код если поле пустое, тогда вывод будет следующим.

Обрезка текста (ellipsis)

Например, нам нужно вывести небольшой кусок текста (30 слов) пускай из поля content (содержимое — где редактор текста) и поставить в конце 3 точки.

В следующем уроке разберем Форматирование дат и времени.

Основной синтаксис MODX Revo
Форматирование дат и времени в MODX >

Релиз новой версии модуля modLivestreet 0.3.0-rc

Продолжая нашу тему про модуль связки MODX и Livestreet, представляю новую версию модуля modLivestreet: livestreet-0.3.0-rc.transport.zip
Что нового? Да практически все 🙂 Модуль переписан с нуля.
1. Серьезно изменена (улучшена) логика обработки запросов на LiveStreet.
2. Добавлена синхронизированная регистрация пользователей в MODX и LiveStreet. Теперь регистрируя пользователя через админку MODX, пользователь автоматически создается в LiveStreet, а обрабатывая запрос на LiveStreet на регистрацию пользователя, регистрация проходит через MODX, что в свою очередь так же обеспечивает синхронную регистрацию пользователя в обоих движках.
Данную функцию можно отключать через настройку.
Под катом схемы работы (упрощенные) MODX в стандартной версии и с модулем modLivestreet и более подробное описание того, как происходит синхронная регистрация пользователей в MODX и Livestreet (Схему, как изменилась регистрация в MODX выложу позже), а так же исходники.
UPD: сборка пакета на github: github.com/Fi1osof/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

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

Что нового в 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 только начинает своё развитие и доступна в альфа-версии.

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

Recovery Mode

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

Основные понятия

MODX, по сути, имеет массу движущих частей. Основные части это:

Ресурсы

Ресурсы основа местоположения веб-страницы. Это может быть фактический контент HTML, или файл, ссылка для пересылки, или символическая ссылка, или что-то еще.

Переменные шаблона (TV)

Переменные шаблона (TV) (TVs) являются настраиваемыми полями для шаблона, которые позволяют пользователю назначать динамические значения для ресурса. Отличным примером может служить TV с тегами, который позволяет указывать теги для ресурса. Вы можете иметь неограниченное количество TV на странице.

Чанки

Чанки просто небольшие блоки контента, будь то, что вы хотите внутри. Они могут содержать Сниппетыили любой другой тип элемента (Сниппет, чанк, TV и т.д.).

Сниппеты

Сниппеты динамические сниппеты кода PHP, которые запускаются при загрузке страницы. Они могут делать все, что вы можете кодировать, включая создание пользовательских меню, получение пользовательских данных, тегирование элементов, обработку форм, получение твитов и т.д.

Плагины

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

Системные настройки

Системные настройки дают вам почти бесконечные возможности конфигурации. Большинство из них установлены наилучшим образом, но некоторые вещи (такие как дружественные urls) по умолчанию отключены или могут быть улучшены для ваших конкретных потребностей, просто изменив значение параметра. После установки перейдите в «Система»> «Системные настройки» в «Менеджере» и просмотрите доступные опции. Обязательно проверьте область «Сайт» (используйте выпадающий список «Фильтровать по области …»), там есть несколько интересных вещей для вас.

Что нужно для обучения MODX:

  • Знания HTML/CSS будут очень кстати

  • Некоторые знания PHP, не обязательны, но будут нужны для настоящего изучения и применения при разработке сайтов на MODX. При необходимости я буду объяснять некоторые базовые моменты использования PHP кода и буду указывать на другие ресурсы для прочтения. Но все же рекомендую получить где-либо еще эти знания, так как они вам сослужат добрую службу.
  • Иногда понадобятся ваши руки и мозги
  • Любопытство, терпение и ваш любимый напиток (у меня — зеленый чай).

По ходу занятий я буду давать некоторые пояснения, которые будут выделятся следующим образом:

Информационные сообщения
Правильные действия
Обратить внимание
Ошибка

Также уроки могут содержать демо примеры, переход на которые и скачивание исходников могут быть обозначены кнопками:

DEMO Скачать

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

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

Adblock
detector