Сегодня вышли новые версии пакетов phpTemplates и modxSmarty.
В phpTemplates исправлен баг контроллера просмотра ресурса и в класс шаблона phpTemplate добавлена конструкция $this->getProperties(); Теперь в контроллерах доступны параметры шаблона. Пример вызова:
$modx->resource->getOne('Template')->getProperties()
или
$modx->resource->getOne('Template')->_properties;
Хотя этим инструментом мало кто пользуется, а между прочим это очень полезная штука. Бывает так, что разные шаблоны по сути полностью идентичные, надо только какие-нибудь настройки перегружать. Вот в шаблонах это есть, как в сниппетах и чанках.
А в modxSmarty добавлены два новых тега. {lang} — возвращает $modx->lexicon(); То есть это языковой тег, берет значение из системных справочников.
Второй — модификатор |spell. Отличный пример использования: modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/40.html#comment391 То есть там пришлось написать несколько строк. А с этим модификатором все гораздо проще: {$room.available|spell:«номеров»:«номер»:«номера»}
Новые пакеты так же включены в обновленную сборку: modxclub.ru/downloads/sborki/sajt-vizitka/versiya-0.0.5-beta.zip
Здесь еще надо сразу отмечать факт стандартизации. Если что-то на хостинге работает неправильно, это обязательно будет пофиксино, а значит эта ошибка устранится для все сайтов. То есть технический риск для сайтов снижается просто на несколько порядков. Если у меня один сайт работает четко, я точно знаю, что залью еще один сайт, и он будет так же четко работать. А если что-то не работает, я напишу в саппорт, который не просто хостингом занимается, а четко знает MODX, и ошибки хостинга будут рассматриваться именно как ошибки для MODX.
Да, modxcloud — отличный инструмент для разработчика. Особенно для тех, кто пытается разрабатывать сайты на денвере, а потом переносить на боевой хостинг. Сколько в коммьюнити топиков, типа «getResources не работает после переноса на хостинг — на денвере все работало» или наоборот — «на хостинге все работает, а на денвере фотки не обрезаются как надо». Используйте бесплатный аккаунт cloud и проблем не будет!
Наверняка уже многие слышали про modxcloud.com, но далеко не все его попробовали в деле. Может уже пора? Сегодня я расскажу, как это сделать проще.
Начнем с того, что на modxcloud.com дев-аккаунт на два облака — бесплатный. А значит попробовать все это дело вам ничего не будет стоить. Если вы не хотите пробовать, так как считаете, что $24 в месяц за 4 облака — это дорого и можно найти гораздо дешевле, и вы все равно вряд ли этим будете пользоваться, а значит и пробовать не стоит, я вас уверяю: не стоит торопиться делать выводы. modxcloud.com — это не просто хостинг, это хостинг для MODX-разработчиков, и он не просто для того, чтобы там крутились ваши сайты, а еще и для того, чтобы процесс разработки и сопровождения ваших сайтов для вас был значительно проще, и главное — отнимал гораздо меньше времени. Простой пример: вам надо установить новый чистый MODX Revolution, или обновить версию MODX текущего сайта на более новую? Вспомните, как это происходит на вашем любимом хостинге (включая коннект по ftp заливку файлов дистрибутива, настройку базы данных и т.п., не говоря уже о последующем походе на форум сообщества с вопросами «Я обновил сайт и у меня все слетело. Что делать дальше?»). А теперь представьте, что все это можно сделать всего в три клика мышкой… И все. Не надо делать вообще ничего. Ваш сайт просто установится или обновится, и все. Главное — вы даже не успеете чаю попить, так как это занимает всего пару минут. Я хочу сказать, что учитывая стоимость моего времени, всего одна такая альтернативная установка сайта в месяц уже отбивает мне $24. А у меня таких операций в месяц не мало… Так что поверьте на слово: это стоит того, чтобы как минимум попробовать все это, тем более бесплатно.
А теперь вернемся к вопросу миграции сайтов. Ведь нас интересует вопрос как переноса на modxcloud.com уже готового сайта, так и с modxcloud.com на другой хостинг (бывает всякое — элементарно у клиента где-то свой аккаунт). Во-первых, конечно же ssh/sftp еще никто не отменял, так что любой может воспользоваться для этих целей привычными методами. Но есть решение гораздо лучше — скрипт Vapor (к слову, скрипт написан самим Джейсоном Ковардом opengeek — главным архитектором MODX). Странно, что о нем почти нигде ничего не упоминается, а это между прочим очень мощный инструмент для резервного копирования MODX-сайтов (именно Рево, и начиная с версии 2.2). Принципы его работы будут очень понятны тем, кто уже писал пакеты для MODX Revolution, и результат его выполнения — обычный пакет, который можно установить через менеджер пакетов на MODX-сайте, только он более обширный. Но здесь очень важно понимать, что этот скрипт предназначен именно для резервного копирования, и все таблицы, которые в него попадут, при установке конечного пакета будут полностью очищены, и наполнены теми данными, которые были в базе данных на момент снятия снимка. То есть используйте его только для переноса или полного бекапа сайта, но никак не для создания заплаток. Для создания заплаток мы будем использовать packMan, и об этом мы поговорим чуть позже.
Пример первый. Перенос существующего сайта на modxcloud.com
1. Выполняем бекап своего сайта привычными методами (На всякий случай. Бекапов много не бывает.) 2. Качаем Vapor и распаковываем его в корень сайта. Затем выполняем этот скрипт, набрав в адресной строке mydomain/vapor_path/vapor.php. Ждем выполнения скрипта (может занять от трех секунд до минуты и больше, в зависимости от размера сайта). 3. Если все выполнилось хорошо, вы увидите сообщение об этом и название созданного пакета. Он будет находиться в папке core/packages/. Вот этот пакет нам и нужен. Это снимок сайта. 4. Перемещаем пакет куда-нибудь так, чтобы он был доступен для скачивания по открытой ссылке (надеюсь у вас на сайте папка /core/ закрыта для запросов из вне). 5. Теперь заходим на modxcloud.com в свой личный кабинет, переходим на страницу Vapor и жмем Import Snapshot
?
6. Далее указываем категорию снапшотов (если надо, создаем новую) и УРЛ на ваш снапшот.
?
7. Жмем «Import Snapshot» и получаем сообщение типа «все ОК, наши роботы работают, и когда все сделают, отправят вам уведомление». Уведомление вы получите на почту, а так же в вашей панели.
?
8. После того, как вы испортировали свой снапшот, его можно распаковать в уже имеющийся сайт, или создать из него новое облако.
?
Это все. На выходе вы получите клон вашего сайта. Большой плюс заключается в том, что можно хранить для себя вот такие снимки, и потом легко разворачивать из них типовые сайты, как это делаем мы.
Пример второй. Перенести сайт куда угодно.
Когда у нас есть готовый снапшот (смотрим пункты 1,2,3 в прошлом примере), мы его можем легко развернуть на любом хостинге. Просто устанавливаем чистую MODX Revolution, заливаем этот снапшот в core/packages/, заходим в админке в менеджер пакетов, выполняем локальный поиск пакетов, и устанавливаем снапшот как обычный пакет. В процессе установки ваша сессия оборвется, и это нормально (я писал выше, что все таблицы очищаются, и modx_sessions — не исключение). Немного подождите (в зависимости от размеров снапшота от нескольких секунд и больше на личное усмотрение) и попробуйте опять авторизоваться в админке. Скорее всего вы получите рабочую копию сайта. Плюс такого метода заключается в том, что вам не приходится править файлы конфигурации и т.п., у вас уже все настроено.
Побочный плюс такого подхода к разработке.
Данный метод можно вообще рассматривать как тест того, правильно ли вы ведете разработку на MODX Revolution. Когда делается снимок вашего сайта, в него не включаются CORE_PATH (за исключением папки components, она включается), MANAGER_PATH, CONNECTORS_PATH, файлы конфигурации и index.php. То есть ядро полностью исключается. И ваши разработки ни в коем случае не должны затрагивать ядра. Это будет обеспечивать полную переносимость вашей разработки на любой MODX-сайт. А если при переносе у вас все ломается, значит вы что-то делаете не правильно (то есть где-то зацепили ядро).
Вот если все вот это вы освоите, и ваш сайт успешно будет переноситься с помощью Vapor, вы научитесь сосредотачиваться только на своей разработке, а не на всей системе в целом. Если вам где-то пришлось затронуть ядро — значит вы недостаточно хорошо знаете MODX, и где-то неправильно с ним работаете, при таком подходе вам придется тянуть не только свою разработку, но и весь сайт в целом, включая ядро MODX-а. А это усложняет ваш проект сразу в тысячу раз.
UPD: Выложил пакет в официальный репозиторий.
Со следующей недели. На выходных буду программировать интерфейсы. Потом недельку будем гонять, и будем в публику запускать.