Шаг 5. Вывод содержимого активной страницы

Этот шаг сам по себе в MODx настолько прост, что выделять его в отдельную тему даже не хотелось. Однако мы воспользуемся данной возможностью, чтобы заодно обсудить некоторые детали.

Определим свою задачу на данный момент: необходимо сделать вывод содержимого активной страницы на сайте. Под активной страницей я понимаю ту страницу, которую в данный момент открывает посетитель. Это может быть главная или любая внутренняя страница сайта.

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

В системе управления сайтами MODx эту основную информацию мы храним и редактируем в специальном поле "Содержимое документа". Кстати, в базе данных MODx мы найдем его в таблице "prefix_site_content" в поле "content", советую все-таки заглянуть туда разок.

Основное содержимое страницы в MODx может редактироваться как с помощью специализированных визуальных редакторов (TinyMCE, FCKEditor и других), так и в HTML коде как обычный текст. Так или иначе, в любом случае в базе данных сохраняется HTML код, который затем должен выводиться на странице.

Наш шаблон в MODx сейчас выглядит следующим образом:

  1.  
  2. {{HEAD}}
  3. <body id="www-url-cz">
  4. <!-- Main -->
  5. <div id="main" class="box">
  6. {{HEADER}}
  7. {{TOPMENU}}
  8. <!-- Page (2 columns) -->
  9. <div id="page" class="box">
  10. <div id="page-in" class="box">
  11. {{STRIP}}
  12. {{CONTENT}}
  13. {{RIGHT-COLUMN}}
  14. </div> <!-- /page-in -->
  15. </div> <!-- /page -->
  16. {{FOOTER}}
  17. </div> <!-- /main -->
  18. </body>
  19. </html>
  20.  

Обратите внимание на чанк {{CONTENT}}, именно в нем сейчас хранится неизменяемая (пока) основная часть страницы.

Откроем этот чанк и внимательно рассмотрим его содержимое. Чанк {{CONTENT}} содержит довольно большой объем HTML кода, поэтому я приведу здесь лишь его часть:

  1.  
  2. <!-- Content -->
  3. <div id="content">
  4. ... ... ...
  5. ... ... ...
  6. ... ... ...
  7. </div> <!-- /content -->
  8.  

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

Таким образом, мы можем практически безболезненно удалить этот код и сохранить измененный чанк в MODx. Однако впоследствии нам этот код еще очень даже понадобится, просто имейте это ввиду.

  1.  
  2. <!-- Content -->
  3. <div id="content">
  4. </div> <!-- /content -->
  5.  

В результате мы увидим, что на всех страницах в тех местах, где должно быть основное содержимое, - пустое место. Это, конечно, неудивительно, т.к. только что мы удалили это самое содержимое.

Изменим наш чанк и сохраним его:

  1.  
  2. <!-- Content -->
  3. <div id="content">
  4. [*content*]
  5. </div> <!-- /content -->
  6.  

И... ничего не изменилось :) Впрочем, такое уже не раз бывало в предыдущих статьях. Так что же мы сделали и, главное, для чего? Мы добавили в коде специальную конструкцию [*content*], которая будет на лету заменяться системой на содержимое активной страницы.

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

Если Вы ничего не меняли в содержимом главной страницы, как и я, то при просмотре главной страницы Вы увидите стандартный текст на английском языке, сообщающий об успешной установке MODx:

Помните, мы вырезали кусок HTML кода, который был предназначен для главной страницы? Я еще сказал тогда, что он нам понадобится. Вот сейчас пришло время его использовать. Я надеюсь, вы его заботливо сохранили, да? ;) Ну а если нет, то не беда тоже, просто вернитесь повыше и скопируйте код из чанка.

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

Вот собственно и все на сегодня. Крайне просто и легко.

Наверняка можно было бы уложиться и в пару строк, но мне показалось, что так будет интереснее и полезнее :). А уж получилось у меня или нет, решать будете вы в своих комментариях и отзывах.

Заключение

В итоге мы научились:

  1. выделять места в шаблоне под главное содержимое страницы;
  2. использовать специальную конструкцию [*content*] для вывода информации текущей страницы.

Дальше будет еще интереснее, оставайтесь с нами и не переключайтесь во время рекламной паузы ;).

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

С уважением,
Игорь.

Предыдущие статьи из цикла:

Первые | Назад | с 11 по 19 из 19
new comment 26.12.2008, 10:35:28

2DeLySh: Дело в том, что если бы я в первых статьях вставлял весь HTML код в окнах, то у меня получились бы не статьи, а лишь громадные ленты с распечаткой HTML кода :). Но в принципе Ваше пожелание понял и учту на будущее. В принципе я так и собирался делать в следующих статьях.

И спасибо за отзыв :)

new comment 06.02.2009, 09:06:38

Да очень интересные статьи... Потратил пол-дня на изучение, интересно.

Кстати, не дочитав до ключевого слова [ * content * ] подумал, что будет опять API использовать и не смотря на ваш пример сделал новый сниппет, посмотрел доку, вставил код:

< ? php $result = $modx->documentObject['content'];

echo $result;

? >

Результат абсолютно тот же самый. Потом стал читать дальше статью и... обнаружил описание [ * content * ].

Радует, что разработчики предусмотрели такие ключевые слова.

Сорри, за форматирование коммента, пока еще не укротил эту систему на вашем сайте.

new comment 04.03.2009, 11:55:46

Спасибо!!! С Вашей помощью поклонников МОДэкс становиться все больше и больше.

Она во многом отличается от уже зарекомендовавших себя систем управления (бесплатных), и разработчики просто бояться тратить время, чтобы разобраться в чем-либо новом. С Вашими статьями все стало просто как дважды-два!:)

new comment 04.03.2009, 16:45:47

Диня и Виктор, благодарю Вас за отзывы о статьях. Чем больше таких положительных откликов, тем больше появляется желания двигаться дальше и писать о действительно замечательных возможностях MODx :).

new comment 14.03.2009, 07:13:57

Спасибо за статью. Очень хотелось бы еще почитать подобное по написанию фронтенда для ввода контента, особенно если он нестандартный (множество кастом полей, картинок и прочее).

new comment 25.03.2009, 13:44:57

когда продолжение? Уже заждался :(

new comment 23.06.2009, 12:58:04

Кстати, в стандартном шаблоне modx вместо используется . Есть какая-то разница?

new comment 23.06.2009, 13:00:02

Кстати, в стандартном шаблоне modx вместо [ * content * ] используется [ * # content * ]. Есть какая-то разница?

new comment 06.07.2009, 10:20:29

2Starosta: Да, разница имеется. [ * # content * ] используется для того, чтобы с этой областью содержимого работал плагин QuickEdit, если он установлен. Обычно я им не пользуюсь, поэтому просто забыл упомянуть о такой возможности. Можете просто протестировать, добавив # перед словом content, и увидеть разницу.

Первые | Назад | с 11 по 19 из 19

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

Для форматирования используйте синтаксис Markdown. Если вы не можете разобрать символы в рисунке, нажмите на него для автоматического обновления
Если вы не можете разобрать символы в рисунке, нажмите на него для автоматического обновления
Код безопасности: