Jump to main content Jump to doc navigation

Создание пользовательских страниц менеджера MODX (CMP) намного проще в MODX Revolution 2.3 - вам просто нужно задать путь к пространству имен, а затем создать файлы PHP. Вот и все.

Установка пути к пространству имен

Во-первых, мы создадим пространство имен («Настройки»>«Пространства имен») с именем «mycmp» и установим его путь в «{core_path}components/mycmp/». Также установите его путь к ресурсам "{assets_path}components/mycmp/".

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

Создание меню

Теперь нам понадобится пункт меню для ссылки на наш CMP. Перейдите в Система -> Главное меню и создайте пункт меню под пунктом меню «Приложения», который выглядит следующим образом:

Как видите, мы указываем пространство имен как «mycmp», а затем «Action» как «welcome». Это означает, что наш контроллер по умолчанию будет контроллер «welcome».

Создание файла контроллера

Далее мы создадим файл контроллера по адресу {core_path}components/mycmp/controllers/default/welcome.class.php. Почему выбран путь "controllers/default/welcome.class.php"? Ну, MODX автоматически ищет в каталоге «controllers/» ваши контроллеры. Во-вторых, здесь по умолчанию используется текущая тема менеджера (чтобы вы могли создавать разные контроллеры для разных тем менеджера), поэтому мы создаем его в директории «default» (по умолчанию). И, наконец, «welcome.class.php» - это имя, которое соответствует нашему действию «welcome», помещенное в меню выше. Если бы мы установили действие меню на «home», мы бы вместо этого создали файл «home.class.php».

Теперь перейдем к содержимому файла:

<?php
class MycmpWelcomeManagerController extends modExtraManagerController {
   public function process(array $scriptProperties = array()) {}
   public function getPageTitle() {
       return 'Моя тестовая страница CMP';
   }
   public function getTemplateFile() {
       return 'welcome.tpl';
   }
}

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

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

MODX использует шаблоны Smarty для страниц CMP. Система будет автоматически искать их в каталоге [namespace-path]templates/, поэтому все, что вам нужно сделать, это указать в контроллере, какой файл в этом каталоге искать (вы также можете указать здесь подкаталоги). Создайте файл в {core_path}components/mycmp/templates/default/welcome.tpl

Давайте сделаем содержание простым:

<div class="container">
<h2>Добро пожаловать!</h2>
</div>

Простой h2, с упаковочным div, который добавляет отступы И это будет отображаться на нашем CMP:

Мы закончили!

Вот и всё! Это всё, что вам нужно, чтобы начать создавать CMP в MODX 2.3. Вы видите, что наш CMP теперь доступен через /url/to/modx/manager/?action=welcome&namespace=mycmp - что намного лучше, чем действия на основе идентификаторов версии 2.2 и ранее.

Очевидно, существует больше методов API, которые вы можете переопределить в modExtraManagerController в своем классе контроллера PHP, а затем вы можете использовать MODExt и подобные в вашем реальном CMP для создания мощных страниц, но это выходит за рамки этого руководства.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • Fabian Christen
  • Dannevang Digital
  • Sepia River Studios
  • Chris Fickling
  • CrewMark
  • deJaya
  • Lefthandmedia
  • Murray Wood
  • eydolan
  • Following Sea
  • Anton Tarasov
  • Stéphane Jäggi
  • Raffy
  • Snow Creative
  • A. Moreno
  • Nick Clark
  • JT Skaggs
  • Helen
  • YJ
  • krisznet
  • Richard
  • Yanni

Budget

$301 per month—let's make that $500!

Learn more