→ Пошук по сайту       Увійти / Зареєструватися
Знання CMS — системи керування вмістом

CMS. Ієрархія контенту. Рубрикація контенту

 CMS

Розповсюджені архітектурні і технічні помилки при розробці CMS

  1. Розмежування на рівні сутностей БД елементів контенту і навігації (меню). Меню не є незалежною сутністю і фактично являє собою ієрархічний перелік посилань на елементи контенту, тобто вся інформація про меню міститься в об’єктах контенту.

Вихід: Зберігати ієрархію сторінок в таблиці веб-сторінок, за допомогою «рекурсивного зовнішнього ключа на цю ж таблицю» (дерево сторінок).

  1. Використання в URL сторінки автоінкрементного ідентифікатору сторінки. Неефективно з точки зору usability. (допустимо лише для сайтів ЗМІ і подібних).

Вихід: У якості унікального поля використовувати текстовий ідентифікатор сторінки (наприклад: about, contacts, pronas, tovary).

  1. Залежність URL сторінки від місця сторінки в структурі сайту. Хоча ця властивість зазначається як позитивна з точки зору usability (видно по URL, де ця сторінка в структурі), це має негативне значення для потреби гнучкості розвитку сайту і SEO (оптимізації під пошукові системи) – у разі зміни URL сторінка втратить придбані раніше позиції в пошукових системах. Якщо ж URL сторінки не залежить від місця сторінки в ієрархії сайту, її можна вільно пересувати, розвиваючи ресурс, не втративши пошукових позицій.

Вихід: У якості унікального ідентифікатора стоірнки використовувати текстовий ідентифікатор (наприклад: about, contacts, pronas, tovary). У свою чергу це позитивно відобразиться на usability.

  1. Використання у якості URL сторінки транслітерованого заголовка сторінки – негативно позначається для SEO: при зміні заголовка змінюється URL.

Вихід: аналогічно попередньому.

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

Вихід: зберігати іншомовні версії в тій же таблиці сторінок у відповідних полях, що дублюють основні текстові поля для контенту.

Місце сторінки в структурі сайту

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

parentId

Id

Редагування таблиці, що представляє деревоподібну структуру

Щоб створити модуль редагування з урахуванням деревоподібної структури слід врахувати наступне:

  1. Вибрати значення коду для кореня дерева: наприклад default.
  2. При зверненні до скрипта без параметрів відображати усі елементи, у яких parent_id=’default’ (select * … where parent_id=’ default’ order by place_num )
  3. Забезпечити навігацію з урахуванням зв’язків батьківський-дочірній. Біля кожного запису відображати посилання на його дочірні запису, тобто звернення до цього скрипта з відповідним GET-параметром: ?parent_id=$this_id.
  4. При зверненні до дочірніх елементів, показувати тільки ті елементи, parent_id яких відповідає параметру отриманому в GET запиті: select * … where parented=$parent_id )
  5. Забезпечити цілісність при редагуванні/видаленні: при видаленні елемента рекурсивно видаляти також усі його дочірні, дочірні дочірніх і т.д.

Сортування сторінок сайту при побудові меню і інших елементів навігації. Зауваження

Щоб отримати базову можливість керувати порядком подання сторінок в меню і списках в таблиці сторінок можна використовувати додаткове поле: int place_num. При виводі в SQL-запиті слід застосувати сортування по цьому полю.

Сторінки-контейнери. Зауваження

Сторінки-контейнери – сторінки, головним призначенням яких є подати список посилань (як правило список анотованих посилань) на дочірні сторінки.

Щоб забезпечити CMS здатністю використовувати сторінки-контейнери, можна додати додаткове поле в таблицю/клас сторінки, яке вказуватиме на тип даної сторінки. У базовому випадку це поле може приймати два значення: single (по замовчуванню) або container. (Або ж 0 або 1, TRUE або FALSE…).

У тому випадку, коли відбувається публікація сторінки-контейнера (тобто $this->type==’cantainer’), слід організувати цикл по дочірнім сторінкам, у якому вивести анотовані посилання на них. (метод printContent à перевірка типу сторінки à якщо контейнер, вивести посилання на дочірні сторінки )

Модульний принцип побудови сайтів. Зауваження

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

Для цього

  1. Вбудова php-скрипта в сторінку CMS: поле-скрипт. Можна використати додаткове поле в таблиці контенту: php_script. Воно вказуватиме на файл (відносний шлях до файлу), який повинен бути підключений в момент виклику методу публікації контенту об’єкту сторінки (у методі printContent() виконати інструкцію include $this-> php_script).
  2. Підключення зовнішнього модулю в навігацію сайту на базі CMS: поле-посилання. Використання додаткового поля в таблиці контенту: посилання сторінки href. Поле-посилання буде фігурувати скрізь в елементах навігації при організації посилання на дану сторінку. Таким чином можна переадресувати сторінку на деяку папку сайта: якщо в href зберігається contacts/’, тоді замість посилання www.site.ua/?show=contacts фігуруватиме посилання www.site.ua/contacts/. У відповідній папці можна розмістити додатковий функціонал/модуль.

Практичне завдання

Завдання на лабораторну роботу № 4

Доопрацювати попередню роботу, додавши ієрархію як в ядрі, так і в «адмінці»:

Створити просту CMS. Створити три складові системи: БД, модуль редагування, модуль подання (ядро):

  1. БД: Контент, тобто сторінки зберігаються в 1-й таблиці.
  2. Модуль редагування: дає можливість редагувати таблицю сторінок
  3. Модуль подання:

1)    Зауваження: усі запити відбуваються на хост сайту (тобто на index.php, в index.php підключаються необхідні бібліотеки). Код сторінки передається методом GET, наприклад URL можна задавати так: http://supersite.ua/?show=main.

2)    Створити клас «Сторінка/Елемент контенту», поля якого видобуваються з БД, містить метод публікації контенту.

3)    При публікації сторінки в заголовок браузера (<title>) виводити заголовок сторінки.


© 2009 Титенко С.В. З конспекту лекції. НТУУ "КПІ", АПЕПС
загрузка...
Теми розділу
Сторінки, близькі за змістом