→ Пошук по сайту       Увійти / Зареєструватися
Знання CMS — системи керування вмістом Розробка систем керування контентом (CMS) – архітектурні та інфологічні засади

6. Мова макрокоманд контенту в CMS

 CMS

Робота з контентом часто передбачає багаторазове виконання однотипних задач оформлення інформації. Серед таких задач можуть бути наступні:

  • вставка ілюстрацій, що оформлюються певним однаковим стилем на всьому сайті;
  • оформлення внутрішніх посилань на сторінки сайту, які не повинні залежати від технічних особливостей формування URL;
  • створення блоку анотованого посилання на іншу сторінку сайту у якості анонсу сторінки;
  • оформлення певних однотипних логічних фрагментів контенту, що можуть повторюватись на різних сторінках сайту.

Виконання подібних задач вручну призводить до необхідності повторного формування html-коду та нагромадження в контенті сайту технічно-залежного коду (URL, посилання на фізичні каталоги зображень тощо).

Зручним розв’язком описаної проблеми є створення системи макрокоманд контенту, що дозволять зосередити логіку оформлення невеликих повторюваних фрагментів контенту в одному місці.

Приклад гіпотетичної макрокоманди для вставки зображення-ілюстрації:


 <p> Lorem ipsum dolor sit amet. ##img(some.jpg,left)## Ut enim ad minim veniam. </p> 

Інший варіант синтаксису:


 <p> Lorem ipsum dolor sit amet. [[img some.jpg left]] Ut enim ad minim veniam. </p> 

Тут img – ім’я команди; some.jpg, left – аргументи команди; ## та [[ ]] – маркери початку та кінця команди.

Результат роботи команди:


<p> Lorem ipsum dolor sit amet.
<img src=”images/some.jpg” class=”image left” >
Ut enim ad minim veniam. </p>

Зауважимо, що даний приклад можна реалізувати засобами CSS, натомість часто засобів CSS не достатньо для зручного вирішення завдань повторної публікації невеликих фрагментів HTML.

Реалізація парсингу макрокоманд в CMS

Макрокоманди контенту в CMS – це спеціальна мова логічного керування контентом, оператори якої вбудовуються безпосередньо в html-текст веб-сторінки. Такі команди можуть використовуватись на рівні контент-менеджера або архітектора веб-сайту.

Алгоритм парсингу html-тексту сторінки для обробки макрокоманд:

1. Цикл поки в Тексті зустрічається маркер початку команди:

1) отримати позицію першого входження маркера початку команди;
2) отримати позицію маркера кінця команди;
3) видобути текст до команди (Текст1) та текст після команди (Текст2) – рис. 13;
4) видобути текст команди без маркерів;
5) видобути назву команди;
6) видобути аргументи команди;
7) запустити обробку команди:

перевірити існування функції-обробника по імені команди;
якщо обробник відсутній, просто видалити текст команди з контенту;
запустити функцію-обробник і передати в неї параметри (масив параметрів);
функція повертає результат у вигляді рядка;
вставити на місце команди отриманий результат, рис. 13:
Текст = Текст1 + Результат + Текст2;

Кінець. 

Рис. 13. Обробка макрокоманди

Зауваження

В PHP пошук маркерів команд слід виконувати за допомогою функції strpos() – пп.1, 1.1, 1.2 алгоритму.

Зауваження

Заміна тексту команди в контенті відбувається шляхом розбиття тексту на три частини: текст до команди, текст після команди та власне текст команди. Текст команди обробляється, та отриманий результат конкатенується з першою і третьою частинами тексту. В PHP для видобування частини рядку використовується функція substr() – п.1.3. Альтернативним способом парсингу макрокоманд є регулярні вирази.

Реалізація обробки макрокоманд в CMS

Після синтаксичного аналізу, коли отримано усю інформацію про команду, тобто її ім’я та аргументи, необхідно здійснити обробку команди. Для того, щоб забезпечити зручний механізм додавання нових команд в CMS визначення та запуск функції-обробника можна організувати автоматично по імені команди. Наприклад, для команди img слід здійснювати запуск функції macro_img і т.п.:


/**
 * $name – ім’я команди;
* $args – аргументи команди, масив
*/
$prefix = ‘macro_’;
$func_name = $prefix . $name;
if (function_exists($func_name))
$result = $func_name($args);
...

Інший варіант обробки макрокоманд – автоматичний запуск шаблона із іменем, що будується на основі імені команди:


/**
* $name – ім’я команди;
* $args – аргументи команди, масив
* output() – функція підключення шаблону
*/
$folder = ‘macros/’;
$tmpl_name = $folder . $name;
$result = output($tmpl_name, $args);
...

Приклади макрокоманд в CMS

Макрокоманди допомагають створювати невеликі шаблони для вставки в текст веб-сторінок – так звані мікрошаблони. Серед типових завдань, що доцільно вирішувати за допомогою макрокоманд, наступні:

внутрішнє посилання – команда, що у якості параметра приймає код сторінки:


 ##link(about)Посилання на опис компанії##endl## 

блок анотованого посилання на внутрішню сторінку (анонс), параметр – код сторінки:


  <h2>Оновлення сайту</h2>
##announce (newpage)##

вставка зображення в потрібному стилі сайту, вхідний параметр – ім’я файлу зображення:


 ##img(pict.jpg)## 

Публікація дочірніх елементів деякої сторінки у вигляді списку чи плитки, параметр – код сторінки:


<h2>Сторінки розділу</h2>
##list(products)##

<h2>Сторінки розділу</h2>
##tiles(products)##

Публікація сторінок із розділу новин у вигляді стрічки новин, параметр – код розділу новин; публікуються лише ті сторінки, що відповідають даті; застосовується сортування по даті; результат – список анотованих посилань на останні новини; цю макрокоманду зручно використовувати для головної сторінки сайту:


<h2>Новини сайту</h2>
##lenta(news)## 


© Титенко С. В. Інформація курсу по матеріалам:
Web-орієнтовані інформаційні системи. Методичні вказівки до вивчення дисципліни для студентів напряму підготовки 6.050103 «Програмна інженерія» / Титенко С. В. – К.: НТУУ «КПІ» 2015. – 51с.
загрузка...
Теми розділу
Сторінки, близькі за змістом