Давно не писал что-нибудь заумное, чтоб после прочтения у Вас голова заболела, поэтому решил написать! Может будет трудно осилить, но Вы приблизитесь к опытному уровню разработок в modx. В этой статье я не буду разжевывать всё в подробностях, но она будет очень большая, охватывающая многие аспекты программирования в среде для разработки modx, поэтому Вам придётся набраться терпения, но это будет того стоить, так как некоторые решения Вы не найдётё в интернете.
Что Вы будете уметь после прочтения?
- Во-первых работа с внешними скриптами с использованием API MODX;
- Не обойдется без решения таких вопросов как получения сессий, залогиных пользователей;
- Особое внимание я уделю выводу ресурсов(документы расположенные в админ. панели) с помощью jQuery;
- В конце всего вы найдёте мини-примеры, которые наиболее востребованы в моей практике.
- На последок я сделал Вам сюрприз, - мы встроим интересную jQuery каптчу в скрипт модуля регистрации MODX.
Итак, - поехали!
То что я буду Вам пытаться сейчас объяснить вызовет у Вас головную боль, но поверьте эта боль - меньшее зло, по сравнению с той, которая бы у Вас проявилась, если бы Вы вручную - методом проб, всё бы это пытались создать. Для начала давайте вспомним, что отменили в последней версии MODx - 2.1.
Список отменённых методов в MODx 2.1!
- getSettings()
- getDocumentObject()
- getLoginUserType()
- getDocument()
- getDocuments()
- getUserDocGroups()
- getFullTableName()
- getAllChildren()
- getActiveChildren()
- getDocumentChildren()
- getDocumentChildrenTVars()
- getTemplateVar()
- getTemplateVars()
- getTemplateVarOutput()
- getParent()
- getPageInfo()
- getUserInfo()
- getWebUserInfo()
- getDocGroups()
- changeWebUserPassword()
- changePassword()
- cleanDocumentIdentifier()
- getDocumentIdentifier()
- getDocumentMethod()
- checkPreview()
- logEvent()
- getManagerPath()
- userLoggedIn()
- mergeDocumentContent()
- mergeSettingsContent()
- mergeChunkContent()
- mergePlaceholderContent()
- isBackend()
- isFrontend()
- insideManager()
- putChunk()
Правильно выводим статьи в MODX REVOLUTION!
Часто разработчику необходимо получать данные не прибегая к перезагрузке страницы, то есть через ajax. Так как с системами управления это достаточно сложно реализовать начинающим пользователям и разработчикам этих систем, поэтому мы начнём с правильного подключения MODx API во внешних скриптах.
Для начала нужно определится с подключением к MODX API. Данный код нужен для защиты.
Далее следует указать стоит ли кэшировать данные MODX, - по умолчанию данные кэшируются, что мы собственно и видим.
После этого нам нужно подключить основной класс для работы с API MODX и конфигурационный файл:
- config.core.php
- modx.class.php
В моих скриптах я использую заголовок для указания правильной кодировки. Правильнее этот заголовок разместить выше предыдущих скрипов, но в связи с тем что мои скрипы, как правило, не выводят ошибок до этого заголовка, то и сообщение о его неправильно размещении Вы так же не должны получить.
Я советую использовать нижеуказанный код для записи всех действий в журнал MODX.
Задайте уровень обработки ошибок.
Здесь нужно быть по внимательнее, выбрав правильный контекст, изначально он такой. Если Вам нужен другой контекст, - измените соответственно строку 'web'.
Сейчас мы подобрались к основному выводу содержимого статей вашего сайта. В следующем листинге мы получаем объект - ресурс с "ID" равным 3. Если у Вас пока одна страница "HOME", то Вам необходимо изменить его на 1, иначе ничего не будет выведено. Сейчас я не буду объяснять подробное назначения массива, но заранее отмечу что в MODX можно выбирать статьи одновременно по нескольким параметрам, а так же несколько ресурсов в одни массив, но пока давайте выведем содержимое одной статьи по её ID.
Теперь, когда у нас есть объект, мы можем получить его данные, давайте получим содержимое статьи.
Рабочий вариант полностью.
Если нужно вывести одновременно несколько статей, например, зная их название и краткое описание, то нужно использовать метод getCollection и заменить всё в предыдущем листинге начиная с 93 строки следующим кодом:
В итоге будут получены первые три статьи, при этом все переменные, TV будут распарены, а сниппеты выполнены - это основное отличие от предыдущего листинга, в котором содержимое выводится в том виде, в котором Вы его видите в админ. Панели, - при редактировании в редакторе(content).
Используя этот шаблон php скрипта плюс небольшое дополнение на jQuery, например $.load или $.post или $.ajax Вы сможете создавать динамичные ресурсы внутри системы MODX.
Учимся выводить данные о пользователе во внешние php скрипты в MODX REVOLUTION!
Как-то у меня возникла необходимость получать имя активного пользователя, для того чтобы заполнить его данным таблицу SQL, я выбрал следующее решение.
Другой раз у меня возникла необходимость отправки данных на email, который должен был быть указан пользователем и может постоянно изменяться. Для того, чтобы пользователю не "лазить" по скриптам, я решил создать сниппет в котором пользователь мог удобно изменить email на нужный. Для вызова сниппета мне пришлось использовать метод runsnippet. Поэтому может и Вам пригодится:
Получаем данные об активном пользователе или странице через сниппет!
Получать данные об активном пользователе или странице внутри системы (НЕ ВО ВНЕШНЕМ СКРИПТЕ), через сниппет можно следующим образом:
Получим текущий заголовок страницы(pagttitle), в сниппетах, - не забывайте вместо echo пишется return:
Однажды столкнулся с ситуацией, когда в системе было несколько статей с одинаковыми заголовками, одни из которых были опубликованы, другие нет, для того чтобы вывести опубликованные использовал следующий код:
Мини-примеры MODX API REVOLUTION!
Получаем системные настройки MODX:
Получаем переменные шаблонов (TV):
Так как не запрещено внутри TV использовать другие TV, то для того чтобы получить TV с уже распарсенным TV, нужно использовать следующий код:
Встраиваем содержимое ресурса, заголовок которого - "MyDocument", в чанк, тем самым все переменные внутри этого содержимого будут распарсены парсером MODX.
Выполнить сниппет можно с указанием его настроек следующим образом:
Для получения параметров сниппета, установленных по умолчанию используется следующий код:
Встраиваем каптчу «QapTcha»!
Я взял каптчу с сайта QapTcha. Для начала включите в шаблон, на странице которого будет размещаться форма регистрации js и css файлы, как указано ниже:
После вставляем сниппет регистрации, он доступен по умолчанию и включен в состав сниппета "Login".
Следующий код нужно вставить в форму регистрации, - там где Вам нужно, обычно это перед кнопкой отправки формы. То есть данный код создаёт каптчу.
Далее заменить строку 69 сниппета "Register", находящийся в разделе сниппетов плагина "Login":
В итоге на странице, где у Вас расположена форма будет находится красивая и простая каптча:
Для правильной работы каптчи нужен php, сохраняющий данные в сессию, который указан ниже:
Заключение
Теперь многое для Вас в Modx станет доступным. А если не совсем, - для этого есть комментарии или форум со специальным разделом "MODX REVOLUTION"!
539 просмотров
Взаимосвязанные материалы
Давно не писал что-нибудь заумное, чтоб после прочтения у Вас голова заболела, поэтому решил написать! Может будет трудно осилить, но Вы приблизитесь к опытному уровню разработок в modx.
читать...Ajax запросы в Modx Revo можно делать различными способами:
читать...Установка галерей изображений в Modx Revo вызывает наибольшее затруднение у начинающих пользователей Modx.
читать...Пример загрузки статьи с сайта в админ панель Modx Revo. После загрузки пользователь будет перенаправлен на страницу с id "251".
читать...//