Общие параметры / pdoTools / Компоненты / docs.modx.pro
Общие параметры для сниппетов, основанных на pdoTools/pdoFetch.
Параметры выборки ресурсов
Эти параметры определяют, какие объекты будут получены.
Название | По умолчанию | Описание |
---|---|---|
&class | modResource | Класс получаемого объекта |
&parents | Текущий ресурс | Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&depth | 10 | Глубина поиска дочерних ресурсов от родителя. |
&resources | Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&context | Ограничение выборки по контексту ресурсов. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&showDeleted | 0 | Показывать удалённые ресурсы. |
&hideContainers | 0 | Отключает вывод контейнеров, то есть, ресурсов с «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 | Ограничение количества результатов выборки. Можно использовать «0». |
&offset | 0 | Пропуск результатов от начала. |
&first | 1 | Номер первой итерации вывода результатов. |
&last | Автоматически, по формуле (total + first — 1) | Номер последней итерации вывода результатов. |
&loadModels | Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch3`. | |
&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. Подробности в соответствующем разделе. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации вывода, то есть отвечают за внешний вид.
Название | Описание |
---|---|
Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. | |
&tplFirst | Имя чанка для первого ресурса в результатах. |
&tplLast | Имя чанка для последнего ресурса в результатах. |
&tplOdd | Имя чанка для каждого чётного ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов). |
&tpl_N | Имя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса. |
&tpl_nN | Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу. |
&tplCondition | Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. |
&tplOperator | Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls. |
&conditionalTpls | JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей. |
&outputSeparator | Необязательная строка для разделения результатов работы. |
Параметры результатов
Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.
Название | По умолчанию | Описание |
---|---|---|
&return | chunks | Определяет способ вывода результатов. См. ниже. |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т. п.) будут вырезаны. |
&nestedChunkPrefix | pdotools_ | Префикс для «быстрых плейсхолдеров», включаемых параметром &fastMode |
&idx | Вы можете указать стартовый номер итерации вывода результатов. | |
&totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. |
&includeContent | 0 | Включаем поле «content» в выборку. |
&includeTVs | Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] . | |
&includeTVList | Псевдоним &includeTVs | |
&prepareTVs | 1 | Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs. |
&processTVs | Список ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в | |
&tvPrefix | tv. у pdoResources и пусто у других сниппетов | Префикс для ТВ параметров. |
&prepareSnippet | 1 | Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять |
&decodeJSON | Разбирает поля типа JSON вместо вывода в виде строки | |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | Генерировать ссылку с учетом класса ресурса. | |
&toSeparatePlaceholders | Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]] , [[+myPl1]] и т.д. | |
&additionalPlaceholders | Устанавливает дополнительные плейсхолдеры | |
&cache_key | Значение системной настройки cache_resource_key для ресурсов (по умолчанию resource) или default | Ключ кеширования |
&cache_handler | Значение системной настройки cache_resource_handler или xPDOFileCache | Обработчик кеша |
&cacheTime | Значение системной настройки cache_resource_expires или 0 (вечный) | Время жизни кеша |
Способы вызова чанков
Все чанки могут иметь один из следующих префиксов:
@INLINE или @CODE. В качестве шаблона будет использован код после этого префикса.
[[!pdoResources? &parents=`0` &tpl=`@INLINE <li>{{+pagetitle}}</li>` ]]
В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.
Поэтому для INLINE чанков предусмотрена замена [[+]] на {{+}} — такие теги MODX пропускает, а pdoTools при работае конвертирует их как нужно. Конечно, вы всё равно можете использовать теги MODX, если вам нужно, чтобы в чанк попала уже обработанная информация, например:
[[!pdoResources? &parents=`0` &tplFirst=`@INLINE Текущая страница: [[*pagetitle]]` &tpl=`@INLINE <p>{{+id}} - {{+pagetitle}}<p>` ]]
@FILE. Вместо чанка из базы данных используется содержимое файла. Путь до файла указывается в систеной настройке pdotools_elements_path. Имя файла должно быть с расширением .tpl или .html.
[[!pdoResources? &tpl=`@FILE fileBasedRow.tpl` ]]
@TEMPLATE. Указывается идентификатор или имя шаблона. Если пусто — для каждого ресурса будет использован его собственный шаблон.
[[!pdoResources? &tpl=`@TEMPLATE 10` ]]
@CHUNK. Аналогично простому указанию имени чанка, оставлено для совместимости со сторонними сниппетами.
[[!pdoResources? &tpl=`@CHUNK tpl.Resource.row` ]] [[!pdoResources? &tpl=`tpl.Resource.row` ]]
Подробнее про возможности pdoParser можно прочитать в соответствующем разделе.
Возвращаемые значения
pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return
. В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return
в pdoResources:
[[!pdoResources? &parents=`0` &return=`json` ]]
- chunks — оформленные чанки, по умолчанию.
- sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
- data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
- ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр
&returnIds
использует именно этот тип. - json — возврат массива данных JSON строкой.
- serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать
json
.
pdoMenu / Сниппеты / pdoTools / docs.modx.pro
Сниппет генерации меню. Может заменять Wayfinder, и позволяет более гибко указывать параметры.
Например, умеет строить меню сразу из нескольких родителей, отображая их как вместе, так и отдельными ветками.
Существенный прирост скорости дает только при первом запуске, дальше Wayfinder не особо уступает, благодаря грамотному кэшированию.
Параметры
По умолчанию pdoMenu принимает общие параметры pdoTools и некоторые свои:
Название | По умолчанию | Описание |
---|---|---|
&parents | Текущий ресурс | Список родителей для поиска результатов, через запятую. Если поставить &parents=`0` — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&level | 0 (не ограниченно) | Уровень генерируемого меню. |
&resources | Список ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&displayStart | 0 | Включить показ начальных узлов меню. Полезно при указании более одного «parents». |
&context | Ограничение выборки по контексту ресурсов. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&previewUnpublished | 0 | Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение. |
&hideSubMenus | 0 | Спрятать неактивные ветки меню. |
&select | Список полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}` | |
&sortby | menuindex | Любое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()` |
&sortdir | ASC | Направление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources. |
&limit | 0 | Ограничение количества результатов выборки. |
&offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit |
&checkPermissions | Укажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`. | |
&countChildren | 0 | Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]] . Делает дополнительные запросы в БД, поэтому по умолчанию отключен. |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран. | |
&plPrefix | wf. | Префикс для выставляемых плейсхолдеров. |
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr». |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&cache | 0 | Кэширование результатов работы сниппета. |
&cacheTime | 3600 | Время актуальности кэша, в секундах. |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | 1 | Генерировать ссылку с учетом класса ресурса. |
&rowIdPrefix | Префикс для выставления идентификатора в чанк. | |
&hereId | id текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета. | |
&includeTVs | Список ТВ-параметров для выборки, через запятую. Например &includeTVs=`action,time` дадут плейсхолдеры [[+action]] и [[+time]] . | |
&prepareTVs | Список ТВ-параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить &prepareTVs=`1`, будут подготовлены все ТВ, указанные в &includeTVs. | |
&processTVs | Список ТВ-параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить &processTVs=`1`, будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу. | |
&tvPrefix | Префикс для ТВ-параметров. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации меню.
Название | Описание |
---|---|
&tplOuter | Чанк оформления всего блока меню. По умолчанию: @INLINE <ul [[+classes]]>[[+wrapper]]</ul> |
&tpl | Чанк оформления пункта меню. Если не указан, то содержимое полей ресурса будет распечатано на экран. По умолчанию: @INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplHere | Чанк оформления текущего пункта меню. |
&tplStart | Чанк оформления корневого пункта, при условии, что включен &displayStart. По умолчанию: @INLINE <h3 [[+classes]]>[[+menutitle]]</h3>[[+wrapper]] |
&tplParentRow | Чанк оформления родителя с потомками, не подпадающего под условия &tplCategoryFolder . Например: @INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplParentRowHere | Чанк оформления текущего документа, если он содержит потомков. |
&tplParentRowActive | Чанк оформления родителей с потомками в активной ветке меню. |
&tplCategoryFolder | Специальный чанк оформления категории. Категорией считается родитель с потомками, у которого указан пустой шаблон или rel="category" в поле link_attributes . |
&tplInner | Чанк оформления всего блока подпунктов меню. Если пуст — будет использовать &tplOuter. Например: @INLINE <ul>[[+wrapper]]</ul> |
&tplInnerRow | Чанк оформления подпункта меню. Например: @INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplInnerHere | Чанк оформления активного подпункта меню. |
Параметры CSS классов
Эти параметры задают значение плейсхолдеров [[+classnames]]
и [[+classes]]
для различных элементов меню. Плейсхолдер [[+classnames]]
выводит только название класса без атрибута class=»», в отличие от плейсхолдера [[+classes]]
.
Название | Описание |
---|---|
&firstClass | Класс для первого пункта меню. По умолчанию: first |
&lastClass | Класс последнего пункта меню. По умолчанию: last |
&hereClass | Класс для активного пункта меню. По умолчанию: active |
&parentClass | Класс категории меню. |
&rowClass | Класс пункта меню. |
&outerClass | Класс обертки блока меню. |
&innerClass | Класс обертки блока подпунктов меню. |
&levelClass | Класс уровня меню. Например если укажите «level», то будет «level1», «level2» и т.д. |
&selfClass | Класс текущего ресурса в меню. |
&webLinkClass | Класс ресурса-ссылки. |
Примеры
Обычный вывод меню из корня сайта в один уровень:
[[pdoMenu? &parents=`0` &level=`1` ]]
Вывод с исключением определенных родителей и проверкой разрешений пользователя:
[[pdoMenu? &parents=`-10,-15` &level=`2` &checkPermissions=`load,list,view` ]]
Вывод меню сразу из двух родителей, с показом корневых точек:
[[pdoMenu? &parents=`10,15` &displayStart=`1` ]]
Вывод двух уровней ресурсов с подсчетом количества вложенных:
[[pdoMenu? &parents=`0` &level=`2` &tplInner=`@INLINE [[+wrapper]]` &tplParentRow=`@INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]` &countChildren=`1` ]]
MODX Revolution — Базовый туториал.
MODX Революция Головна / Построю уборкуОфициальный сайт MODX
http://modx.com/
Первичные материалы о создании сайтов на MODx
Параметры сниппетов
http://wiki.modxcms.com/index.php/Category:Фрагменты
Остальной дистрибутив можно скачать по адресу http://modx.com/download/evolution/
Последовательность создания сайта на MODx эволюция
- Создайте базу данных с тем же префиксом, который назначает хостер, чтобы не редактировать файл config.inc.php.
- Установить MODx. Зробити налаштування.
- Скопируйте шаблон на сайт в папку assets/templates.
- Скопируйте код шаблона index.html из шаблона «Минимальные шаблоны».
- Все посередине напишите путь
.
- Написать пути к скриптам, картинкам, стилям (img, ссылка, scrypts). Например,
- Назначение шаблонов ссылок на сайте.
- Увидев спальни, со всех сторон часть смрада будет кусками. Кусочки появляются на косточках фигурных висков. Например, ((ГОЛОВА))
- Грязное меню сайта можно списать на окремый кусок. .
- Меню сайта Эта карта сайта отображается в виде фрагмента Wayfinder. Описание фрагмента Wayfinder.
- Список ресурсов для этого номера с описаниями, картинками, сообщениями… отображается вместе с сниппетом Ditto. Опишите и прикрепите фрагмент Ditto.
- Навигационный фонарь «Хлебные крошки» отображается во фрагменте «Хлебные крошки». Описание фрагмента хлебных крошек.
- Поиск по сайту осуществляется с помощью сниппета AjaxSearch. Описание сниппета AjaxSearch.
- Форма зв’азку- Сниппет eForm. Приклад складной формы зворотной звязки с использованием сниппета eForm.
- Плагин Phx назначения для перепроверки наличия изображения в ТВ-параметрах с указанием полномочий отца и внутр.
- Необходимо дополнительно прописать кильку стилей.
- После переноса сайта на хостинг:
http://www.xml-sitemaps.com
# Исключения modx по умолчанию
User-agent: *# права индексации распространяются на любого робота
Disallow: /assets/cache/
Disallow: /assets/docs/
Disallow: /assets/export/
Disallow: / assets/import/
Запретить: /assets/modules/
Запретить: /assets/plugins/
Запретить: /assets/snippets/
Запретить: /assets/packages/
Запретить: /assets/tvs/
Запретить: /install/
Disallow: /manager/
# Для автообнаружения sitemaps.xml. Раскомментируйте, если он у вас есть.
хост: веб-сайт
Карта сайта: http://site/sitemap.xml
Всем привет, друзья! Это основной урок решения CMF MODX Revo Насколько мы знаем из системы MODX, мы установим необходимые плагины и установим базовую структуру.
Хлопок
Запинити
Ресурсы для базового урока MODX:
- Документация по pdoTools: docs.modx.pro/components/pdotools/
Установка и настройка плагинов MODx
Installable Advanced Версия MODx, при установке указано, что папка будет называться по имени администратора super .
Обязательный плагин MODx
Самые популярные и чаще всего злые дополнения для MODx:
- Ace — Редактор кода MODx;
- Коллекции — введение и управление коллекциями ресурсов;
- pdoTools — Набор базовых инструментов MODx;
- FormIt — робот с формами в MODx;
- phpThumbOf — робот с изображениями в MODx;
- TinyMCE/CKEditor (опционально) — текстовый редактор WYSIWYG для MODx;
- translit — Транслитерация URL для MODX;
- MIGX — Добавлены поля для добавления в MODx;
- autotemplate — «Интеллектуальное» автоматическое распознавание шаблонов ресурсов.
Основные настройки MODx Revolution
Перейти к «Системной настройке».
Общий: Дружественный URL
- Транслитерация псевдонимов: русский;
- Подходит для взбивания URL: So;
- Suvory дружественный режим URL: So;
- Изменить на дублирование URI во всех контекстах: Итак;
- URL избранных материалов: So;
- Не забудьте также изменить имя ht.access в .htaccess в корне сайта.
Раздел: Панель керування
- Показать описание в верхнем меню: Ni.
Роздол: Веб-сайт
- Сторинка помилования 404 «Документ не найден»: Идентификатор ресурса 404;
- Для изоляции: Итак;
- Имя сайта: Назовите свой проект.
Розділ: Система и сервер
- Заголовок Nadsilati X-Powered-By: Ni.
Пространство имен: туз
- Размер шрифта: 18px;
- Мягкая таблица: Привет;
- Розмир таблица: 2;
- Тема редактора (необязательно): атмосфера, хаос, хром, облака, облака_полночь, кобальт, малиновый_редактор, рассвет, мечтатель, затмение, github, idle_fingers, katzenmilch, kr, kuroir, merbivore, merbivore_soft, mono_indrk, завтра_ночь, завтра_ночь_синий, завтра_ночь_яркий, завтра_ночь_восьмидесятые, сумерки, яркие_чернила, xcode ;
- Кроме того, вы можете изменить тему на материал с помощью редактора Ace. Инструкция:
MODx Ace Material Theme 1. Настройка системы > «ace» Пространство имен: Размер шрифта: 15px Высота области редактирования: 560 Невидимые символы: Tak Soft Tab: N Размер вкладки: 2 Тема редактора: Завтра_ночь 2. Файлы: super > default > css > index.css: (Добавить в css) !важно) .ace_gutter(color:#666E79!важно) .ace_active-line,.ace_gutter-active-line(цвет фона: #2A2F38!важно) . ace_scroller,.ace_gutter (цвет фона: #272B33!важно) . ace_meta.ace_tag(цвет:#A6B2C0!важно) .ace_meta.ace_tag.ace_tag-name(цвет:#DF6A73!важно) .ace_entity.ace_other.ace_attribute-name(цвет:#D2945D!важно) !важно) 3. Очистить кэш через меню.
Создание базовых ресурсов
- Сторинка 404 — сторона для фиксации документа не найдена. Не показывать в меню;
- карта сайта — ресурс для видения [] . Пустой шаблон. Не отображать в меню. Введите вместо: XML. Недоступно для розыгрыша. Не помечайте HTML-редактор;
- robots — ресурс для зрения robots.txt . Пустой шаблон. Не отображать в меню. Введите на месте: Текст. Недоступно для розыгрыша. Не помечайте HTML-редактор.
На прошлых уроках мы установили и исправили modx, а также установили пакеты, которые будут необходимы для создания сайта. Сегодняшний урок посвящен переносу отличного HTML/CSS/JS в дизайн MODX Revo. Где взять дизайн, я писал в статье: Шаблоны MODX — что это такое, что это такое? Для своего сайта я выбрал готовый платный адаптивный бутстрап шаблон на theforest за 17$ под названием Brightbox (кликните по названию, чтобы просмотреть демонстрацию йоги и описание). Обыграть можно абсолютно все, все равно без каких-либо затрат — так вы понимаете весь принцип растяжки все быстрее и быстрее.
HTML-структура темы
Практичная тема скина может иметь html, css, js и файлы изображений + иметь больше файлов php- Обробник формы.
На мой взгляд, в папке assets лежат css и js файлы (в отдельных директориях), в папке images — картинки и красные файлы (можно и не красные — все хранится в установленном за замком браузере ) — это html-файлы.
Портирование шаблона на Modx
Самый простой способ — просто залить все файлы с папками (кремовый html) в корень сайта. Але, я пойду по складной тропе. Поскольку у меня нет файлов modx и каталогов ресурсов, я буду загружать ресурсы (подпапки css и js) в корень сайта и изображения в корень.
Предварительно я создал каталог шаблонов и загрузил из него все файлы — вы можете сделать это сами.
Редактирование базового шаблона
В дереве языков перейдите на вкладку «Элементы» и откройте шаблон початка (можно просто нажать ЛКМ или ПКМ и выбрать редактирование).
Можем посмотреть и заменить на код из index.html (в корень сайта не клали).
HTML файл можно открыть с помощью отличного блокнота, а еще лучше написать специальный редактор например
Перейдем на главную страницу сайта.
Основная сторона при этом выглядит криво.
Случилось тому, кто поменял пути к скриптам и css.
Исправление путей
Так сразу выглядят пути.
До речи троха, тема замечательная, озвучьте путь через косую черту /, и \, исправьте.
Если вы уже установили пакет ace, вы можете легко и просто найти замену, для чего можно нажать на код и далее нажать на клавиши Ctrl+H (работает в Linux и windows), в верхнее поле ввести \, а внизу / я нажимаю все.
Упаковка чего угодно, от целых сайтов до одного элемента
Teleport — это скриптовый инструмент командной строки для MODX Revolution. С Revo 2.4 он действительно становится мощнее. Его можно использовать для создания транспортных пакетов, но его также можно использовать практически для любых задач управления. Пример, приведенный в GitHub README, — это создание пользователей.
Мы будем немного менее амбициозны и просто создадим транспортный пакет для шаблона, его поддержку CSS, JS, файлы шрифтов и изображений, а также один ресурс для его использования. И мы начнем с предположения, что у вас уже есть установка MODX с рабочим шаблоном, который вы хотите упаковать.
Я работаю на локальном хосте Mac с установленным веб-стеком MAMP. Все, что вам нужно, это терминал командной строки и возможность запускать PHP из командной строки. В моем случае мне просто нужно было добавить одну строку в мой файл .profile, чтобы я мог использовать простой «php» в командной строке —
псевдоним php="/Applications/MAMP/bin/php/php5.6.10/ bin/php"
Настройка
Первым делом я создал необходимую файловую структуру для Телепорта. В моем домашнем каталоге я создал новый каталог «телепорт» и поместил в него каталоги «профиль», «tpl» и «рабочее пространство».
Как видите, моим следующим шагом было загрузить файл teleport.phar с github. Ссылка для скачивания находится в разделе «Установка» файла README. Обязательно получите его там, чтобы получить последнюю версию. Теперь вы можете запустить Teleport со своего терминала.
Профили
Теперь вы готовы начать использовать Teleport. А теперь вам нужно создать профиль для вашего проекта. Это файл .json, который идет… подождите… в директорию профиля! По сути, он сообщает Teleport, где находится ваша установка MODX.
К счастью, нам не нужно самим писать этот файл .json, Teleport создаст его за нас. Просто дайте ему имя проекта и путь к ядру вашей установки MODX, очень похоже на файлы config.core.php.
php teleport.phar --action=Profile --name="SmallBusiness" --code=smallbusiness --core_path=/Applications/MAMP/htdocs/templates.modx/core/ --config_key=config
{ "name":"SmallBusiness","code":"smallbusiness","properties":{"modx":{"core_path":"\/Applications\/MAMP\/htdocs\/templates. modx\/core\/ ","config_key":"config","context_mgr_path":"\/Приложения\/MAMP\/htdocs\/templates.modx\/manager\/","context_mgr_url":"\/templates.modx\/manager\ /","context_connectors_path":"\/Приложения\/MAMP\/htdocs\/templates.modx\/connectors\/","context_connectors_url":"\/templates.modx\/connectors\/","context_web_path": "\/Приложения\/MAMP\/htdocs\/templates.modx\/","context_web_url":"\/templates.modx\/"}}}
Разве ты не рад, что тебе не пришлось это писать? На самом деле, я обманываю так, что мне даже не нужно прописывать команду. Я сохраняю текстовый файл с командами Телепорта и просто редактирую биты, которые отличаются для разных проектов, а затем копирую всю строку и вставляю в окно своего терминала.
Tpls
Что ж, легкая часть позади… теперь самое неприятное. Вам нужен еще один файл .json, а точнее файл .tpl.json, чтобы точно указать Teleport, что вы хотите, чтобы он делал. В настоящее время просто нет возможности самостоятельно погрузиться в JSON. Однако можно обмануть и скопировать разделы, похожие на то, что вы хотите, из tpls в репозитории GitHub.
В моем случае мне нужен один шаблон, один ресурс и целый каталог файлов. Короче говоря, я скопировал биты из пары этих tpl в репозитории и возился с ними, пока это не заработало. Вот что у меня получилось.
{
{
"name": "smallbusiness",
"description": "Шаблон Bootstrap SmallBusiness",
"автор": "sottwell",
"атрибуты": {
"changelog": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/changelog.txt"
},
"readme": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/readme.txt"
},
"license": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/license.txt"
},
"requires": {
"pdoTools": "~2.1.9"
}
},
"автомобили": [
{
"класс_транспорта":"xPDOObjectVehicle",
"объект":{
"класс":"modTemplate ",
"критерии":["id = 2"],
"граф":{
"Категория":[],
"PropertySets":{
"PropertySet": []
}
},
"package":"modx"
},
"attributes":{
"preserve_keys":false,
"update_object": true,
"unique_key":"templatename",
"related_objects":true,
"related_object_attributes":{
"Category":{
"preserve_keys":false,
"update_object":true,
"unique_key":"category"
},
"PropertySets":{
"preserve_keys":true,
"update_object":true,
"unique_key":["element", "element_class", "property_set"],
"related_objects":true,
"related_object_attributes":{
"PropertySet":{
"preserve_keys": false,
"update_object":false,
"unique_key":"name"
}
}
}
}
}
},
{
"vehicle_class": "xPDOObjectVehicle",
"object": {
"class": "modResource",
"criteria": [
"id = 22"
] ,
"graph": {
"Шаблон": [
],
"ContentT ype": [
],
"TemplateVarResources": {
"TemplateVar": [
]
},
"ResourceGroupResources": {
"ResourceGroup": [
]
},
"ContextResources": {
"Context": [
]
}
},
"package": "modx"
},
"attributes": {
"preserve_keys": false,
"update_object": true,
"unique_key": [
"context_key",
"uri"
],
"related_objects": true,
"related_object_attributes": {
"Template": {
"preserve_keys": false,
"update_object": true,
"unique_key": "templatename"
},
"ContentType": {
"preserve_keys": false,
"update_object": true,
"unique_key": "name"< br>},
"TemplateVarResources": {
"preserve_keys": false,
"update_object": true,
"unique_key": [
"tmplvarid",
"contentid "
],
"related_objects": true,
"related_object_attributes": {
"TemplateVar": {
"preserve_keys": false,
"update_object": true,< br>"unique_key": "name"
}
}
},
"ResourceGroupResources": {
"preserve_keys": false,
"update _object": true,
"unique_key": [
"document_group",
"document"
],
"related_objects": true,
"related_object_attributes": {
"ResourceGroup": {
"preserve_keys": false,
"update_object": true,
"unique_key": "name"
}
}
},
"ContextResources": {
"preserve_keys": true,
"update_object": true,
"related_objects": true,
"related_object_attributes": {
"Context": {
"preserve_keys": true,
"update_object": false
}
}
}
}
}
},
{
"класс_транспортного средства" :"xPDOFileVehicle",
"object":{
"source":"{+properties. modx.context_web_path}активы/тема",
"target":"return MODX_ASSETS_PATH;"
} ,
"атрибуты":{
"класс_транспортного средства":"xPDOFileVehicle"
}
}
]
}
Суть всего этого в четырех разделах: атрибуты для пакета в целом, затем три транспортных средства для трех вещей, которые я хочу упаковать. Я подозреваю, что многие атрибуты для транспортных средств могут быть опущены, но я не собираюсь соваться в это, пока не буду уверен в этом.
Атрибуты
Файл начинается с названия проекта, описания и автора. Затем он попадает в некоторые атрибуты. Я сказал ему добавить три основных текстовых файла, changelog.txt, readme.txt и license.txt, и сказал, где их найти.
{...
"attributes": {
"changelog": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components /test/docs/changelog.txt"
},
"readme": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components /test/docs/readme.txt"
},
"license": {
"sourceType": "fileContent",
"source": "{+properties. modx.core_path}components /test/docs/license.txt"
},
...
Новая функция Teleport с Revo 2.4 — зависимости. Шаблону нужен фрагмент для создания меню. В этом случае я использовал pdoMenu, часть пакета pdoTools. Поэтому я указал зависимость от pdoTools с упоминанием последней версии на данный момент.
...
"requires": {
"pdoTools": "~2.1.9"
}
...
Транспорт
Затем садимся в транспорт. Они в основном сообщают Teleport, какие объекты вы хотите добавить в пакет. Единственными изменениями, которые я сделал в шаблоне и транспортных средствах ресурсов, которые я скопировал, было поле «критерии», где я указал идентификаторы шаблона и ресурса, который я хотел.
...
{
"класс_транспортного средства":"xPDOObjectVehicle",
"объект":{
"класс":"modTemplate",
"критерии":["id = 2"],
...
{
"класс_транспортного средства": "xPDOObjectVehicle",
"объект": {
"класс": "modResource",
"критерии" : ["id = 22"],
...
Файловый транспорт намного проще; все, что ему нужно знать, это откуда взять файлы и куда их установить. Я сказал, что мне нужен каталог assets/theme, и он был установлен обратно в каталог assets.
И Извлечение
К счастью, после всего этого мы можем вернуться к передаче Телепорту одной строчки, и она составит для нас наш пакет. Больше копирования/вставки слегка отредактированной команды. Просто скажите, какие файлы профиля и tpl использовать.
php teleport.phar --action=Extract --profile=profile/bootstrap_small_business.profile.json --tpl=tpl/bootstrap_small_business.tpl.json --name=BootstrapSmallBusiness --version=1.0.0 --release=pl
Аргумент имени устанавливает имя пакета вместе с версией и выпуском. По умолчанию код профиля и имя tpl объединяются с помощью _ для формирования имени пакета.
ZIP-файл пакета будет помещен в каталог «рабочая область». Это обычный пакет transport.zip, который можно установить в установщике MODX Manager, как и любой другой пакет.