Технологія динамічного формування статичного контенту @

Версія для друку

Технологія: Динамічна статика

Проблема статичного контенту

При верстці будь-якого сайту виникає одна проста проблема, яка, незважаючи на свою простоту, вимагає рішення. Це - проблема статичного контенту.

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

Рішення проблеми

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

  1. Написати CMS і зберігати тексти в динаміці;
  2. Оформити весь текст для користувача елементами управління;
  3. Використовувати XML;

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

Для підтримки прийнятого нами рішення ми зробимо кілька кроків:

  1. Відформатуємо наш контент як XML документ;
  2. Створимо XSLT шаблон для формування часткового HTML з XML;
  3. Створимо ASP.NET шаблон для підтримки майстер-сторінок і формування висновку;
  4. Створимо HttpHandler для підтримки SFU (Search Friendly Url);

XML документ

Початок прогресу доводиться на формування схеми XML документа. Завдання це проста, але творча =) Документ повинен містити той набір смислових тегів, який буде використовуватися для структуризації матеріалу. Втіхою може служити те, що не обов'язково формувати відразу всю схему, досить виділити мінімальний набір і розширювати його по ходу справи. Наприклад, документ може бути таким:

В даному прикладі тег article визначає кореневої контейнер документа, тег header визначає заголовок а тег text визначає текст параграфа статті. Для початку достатньо, інші додамо пізніше, якщо виникне потреба.

XSLT шаблон

Відображати документ з XML файлу можна багатьма різними способами. Найбільш перспективним бачиться використання технології XSLT, адже ми поринули в світ XML, так давайте занурюватися з головою!

Для формування рівня уявлення складемо XSLT шаблон, призначенням якого буде формування HTML розмітки нашого статичного контенту. Шаблон XSLT може бути, наприклад, таким:

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

ASP.NET шаблон

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

Це також найпростіша сторінка але, тим не менш, вона виконує свою функцію. Вона вписує наш статичний контент в динамічний шаблон і, при цьому, оформляє контент так, як ми просили.

структура каталогів

Наша сторінка націлена на обробку URL виду

/articles/article.aspx?code=topic для відображення статті

/articles/topic/article.xml. Для підтримки її функціонування створимо таку структуру файлів і каталогів:

/ Articles - папка для статей;
  • /articles/topic/article.xml - файл конкретної статті;
  • /articles/article.aspx - файл ASP.NET шаблону;
  • /articles/article.xslt - файл XSLT шаблону;

  • HttpHandler

    Вийшло досить непогано, але є щось, що тривожить =) Ні користувачі ні пошукачі не люблять урлов з cgi-хвостами. Воно, звичайно, нормально, але краще було-б, щоб урли були звичайними, просто урламі собі і урламі. Тими, які ще називають дружніми пошукачам і людино-зрозумілими.

    Для вирішення цієї проблеми скористаємося технологією сервлетів, яку я підглянув при вивченні Java. Всі можливості для цього у нас в .NET є, спасибі Біллі =)

    Для обробки запитів до контенту напишемо найпростіший обробник, єдиним завданням якого буде маршрутерізація запитів до статики. Оброблювач може бути, наприклад, таким:

    Сенс цього обробника в тому, щоб здійснити маршрутерізацію запиту. запити виду

    /articles/topic/article.aspx (такої сторінки немає в нашій системі) будуть трансльовані в

    /articles/article.aspx?code=topic. Для тих запитів, для яких є відповідний XML. Запити до неіснуючих XML будуть перенаправлені на сторінку зі списком статей. Оброблювач необхідно зареєструвати в web.config, наприклад так:

    Тепер запити будуть перехоплені нашим обробником і відправлені до єдиного шаблону, який відтранслює потрібний XML документ.

    Таким чином ми звели дублювання коду до мінімуму. Тепер залишається тільки зареєструвати статтю з неіснуючим URL =) в нашому файлі SiteMap "і буде нам порахувати".

    Ложки не існує

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

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

    Версія для друку

    Схожі статті