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

4. Ієрархія контенту в CMS

 CMS

Ієрархія – це розташування частин або елементів цілого в певному порядку від вищого до нижчого. Ієрархія – найзручніший і природно зрозумілий спосіб структурування речей, це ж справедливо і для елементів контенту сайту. Незважаючи на те, що ієрархічне структурування в Web викликає труднощі у випадках великої кількості інформації, тим не менше ієрархія, як базова структура, для організації контенту є зручним і практично доцільним способом структурування інформації веб-ресурсу.

Практичне значення ієрархічної структури контенту розповсюджується на обидві категорії користувачів CMS – на відвідувачів сайту і на редакторів.
Об’єктивно навігація по веб-ресурсу передбачає ієрархічно-подібну схему переходів від головної сторінки до розділу, від розділу до підрозділу і т.д. Такі шляхи є базовими маршрутами навігації. Звичайно окрім базових маршрутів є також допоміжні, асоціативні, упорядковані та ін. Натомість, наявність різноманітних шляхів навігації не применшує значущості ієрархічних схем переміщення по веб-ресурсу.

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

Таким чином, вважається доцільним зробити базовою структурою контенту ієрархію сторінок, що виражатиметься в деревоподібній структурі елементів контенту. Для реалізації такої моделі в реляційній БД CMS-системи немає необхідності створювати додаткові таблиці для збереження відношень між сторінками, як це часто робиться в розповсюджених системах. В даному випадку в таблицю сторінок необхідно додати поле, яке вказуватиме на батьківську сторінку. Таке відношення в БД прийнято називати зворотним (рис.6).

Рис. 6. Батьківське відношення в таблиці сторінок для реалізації дерева контенту

Тут code – код сторінки, ключове поле. parentCode – код батьківської сторінки, зовнішній ключ, що посилається на поле code цієї ж таблиці.

Зауваження
У випадку використання СКБД MySQL та типу таблиць MyISAM зовнішній ключ передбачається на логічному рівні застосунку, так як на рівні БД як відомо даний тип таблиць не підтримує foreign key. Натомість таблиці InnoDB foreign key підтримують.

Подібний зв’язок дозволяє представити структуру сторінок у вигляді дерева, де у кожного елемента може бути лише один батьківський (рис.7). 

Рис. 7. Дерево контенту

Організація ієрархічного меню сайту

Навігаційна схема та схема меню сайту можуть значно відрізнятись від проекту до проекту. Натомість одним із найбільш зручних способів забезпечення навігації у великому інформаційному просторі веб-ресурсу є ієрархічне меню, що розкривається послідовно із відвідуванням наступного рівня вкладеності сторінок (рис.8).

Рис. 8. Приклад ієрархічного меню сайту

Зауваження
Не слід плутати ієрархічне меню сайту, що відкривається після відвідування сторінки, із багаторівневим меню, що відкривається при наведенні вказівника миші. Другий із згаданих методів побудови меню є невдалим рішенням з точки зору зручності використання, так як вимагає від користувачів часом складних і незручних маніпуляцій для відкриття вкладених пунктів. Крім того, подібний підхід взято із практики побудови настільних застосунків, і він є неприроднім для веб-навігації. У випадку веб-навігації користувач переміщується у інформаційному просторі, тоді як в середовищі настільного застосунку користувач викликає певні функції із меню. Тому послідовне відкриття розділів і підрозділів в меню із завантаженням і відображенням сторінок дає можливість користувачу відчувати напрямок руху в інформаційному середовищі, і тому вбачається більш доцільним для організації навігації на веб-сайті.

Алгоритм побудови ієрархічного меню сайту

Ієрархічне меню, про яке іде мова, працює відповідно до простого правила: відкрито усіх пращурів поточного елемента, а також і сам поточний елемент.

Поточний елемент меню – це такий елемент, який відповідає поточній сторінці сайту. Відкритий елемент меню – це такий елемент, для якого відображаються усі його дочірні елементи (звичайно один з дочірніх елементів також може бути відкритим).

Алгоритм програмної побудови такого меню:

    1. Визначити ланцюжок батьківських сторінок для поточної сторінки – масив кодів сторінок-пращурів.
    2. Рекурсивна функція “Побудова меню” з аргументом “Сторінка” (код сторінки):
            1) запит на всі дочірні сторінки;
            2) цикл по отриманим сторінкам:
                   • якщо це поточна сторінка, вивести елемент меню як поточний;
                   • інакше вивести звичайний елемент меню;
                   • якщо сторінка міститься в ланцюжку батьківських сторінок, запустити функцію “Побудова меню” і передати дану сторінку у якості аргументу.
    3. Запуск рекурсивної функції з параметром “Сторінка-вершина дерева” (default).
Кінець алгоритму.

Реалізація зсуву вправо. Для візуалізації ефекту вкладеності кожен наступний по глибині рівень повинен відображатися з деяким відступом праворуч (див. рис. 8). Реалізувати зсув можна різними способами. По-перше разом із сторінкою в рекурсивну функцію можна передавати рівень вкладеності. Іншим способом є використання CSS, коли для блоку, що міститиме підпункти задається відступ.

Зауваження
Функція побудови меню повинна враховувати спосіб сортування того чи іншого розділу (чит. далі). У зв’язку з цим в п. 2.1 алгоритму в SQL-запиті слід задати відповідне сортування за допомогою клаузи ORDER BY.

Сторінки-контейнери

Сторінки-контейнери – сторінки, головним призначенням яких є подати список посилань (як правило список анотованих посилань) на дочірні сторінки. Власний контент таких сторінок, як правило, не має великого об’єму і є короткою анотацією до розділу або набору статей. Сторінки-контейнери займають друге місце після простих інформаційних сторінок по частоті застосування в веб-ресурсах (рис. 9).

Рис. 9. Приклад сторінки-контейнера

До прикладів сторінок-контейнерів слід віднести такі розділи: категорії товарів, рубрики новин, тематичні розділи в блогах, сторінки тегів (міток) тощо.

Типи сторінок-контейнерів

Сторінки-контейнери можуть представляти дочірні сторінки у різних формах, основними з яких є наступні:

  1. список анотованих посилань (рис.9);
  2. плитка (рис. 10);

Керування формою сторінки-контейнера можна реалізовувати як на рівні адміністрування сайту, так і на рівні інтерфейсу відвідувача, в залежності від специфіки веб-проекта. З точки зору дизайну і зручності користування сайтом CMS система повинна передбачати керування основною формою подання даної конкретної сторінки-контейнера на рівні редактора сайту.

На рівні структури БД опис контейнерів реалізовується шляхом додавання спеціального поля в таблицю сторінок, наприклад isContainer та/або containerType. isContainer – прапор, що вказує, чи є контейнером сторінка, containerType – вказує тип відображення контейнера (список, плитка тощо). 

Рис. 10. Приклад сторінки-контейнера із відображенням дочірніх сторінок у вигляді плитки

Керування сортуванням дочірніх сторінок

Важливим елементом в реалізації контейнерів є порядок сортування дочірніх сторінок. Керуючи способом сортування, можна створювати розділи новин, категорії товарів, добірки статей тощо. Таким чином, важливим фактором в створенні ефективної схеми роботи з ієрархією контенту та контейнерами в CMS є можливість змінювати порядок сортування для різних розділів на сайті.

Для реалізації даної функціональної можливості на рівні БД слід додати спеціальне поле в таблицю сторінок, що вказуватиме на порядок сортування дочірніх сторінок, наприклад sortBy.

Основні типи сортування в контейнерах:

  • по порядку визначеному редактором (за полем сортування);
  • по даті (за спаданням, або за зростанням);
  • по ціні (у випадку інтернет-магазину);
  • за алфавітом по назві сторінки тощо.

Очевидно, для реалізації сортування у порядку визначеному редактором сторінка повинна отримати ще один атрибут – поле сортування, наприклад place. У випадку сортування сторінок по полю сортування запит на дочірні сторінки контейнера під час публікації міститиме клаузу ORDER BY place.

Таким чином, поле sortBy зберігатиме налаштування для керування вибіркою дочірніх сторінок з БД та порядком їх публікації в контейнері та в меню.



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