Версія для друку
Технологія: Динамічна статика
Проблема статичного контенту
При верстці будь-якого сайту виникає одна проста проблема, яка, незважаючи на свою простоту, вимагає рішення. Це - проблема статичного контенту.
Статичний контент в динамічному оточенні варто якось осібно. Як правило, статичні сторінки оформляються все одно як динамічні, просто в їх тілі знаходиться просто HTML-розмітка контенту. Але в цьому-то і полягає проблема, а саме в тому, що при спробі змінити зовнішній вигляд сайту доведеться переверстувати кожну зі сторінок статики. А робити це ой як ліниво програмісту, що звик до скінів і шаблонами =)
Рішення проблеми
Вирішення цієї проблеми полягає у введенні додаткового рівня абстракції і відділенні змісту від відображення. Для цього можна використовувати кілька технологій.
- Написати CMS і зберігати тексти в динаміці;
- Оформити весь текст для користувача елементами управління;
- Використовувати XML;
З цих способів найбільш зручним бачиться використання XML і пов'язаних технологій, оскільки в даному випадку робота з програмування виявляється мінімальною. А статика вона на те й статика, щоб торкатися її якомога менше, не змінюється вона. З іншого боку, редагування XML не менше зручно ніж редагування HTML. Таким чином ми не будемо ніде ущемлені.
Для підтримки прийнятого нами рішення ми зробимо кілька кроків:
- Відформатуємо наш контент як XML документ;
- Створимо XSLT шаблон для формування часткового HTML з XML;
- Створимо ASP.NET шаблон для підтримки майстер-сторінок і формування висновку;
- Створимо 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/article.xslt - файл XSLT шаблону;
HttpHandler
Вийшло досить непогано, але є щось, що тривожить =) Ні користувачі ні пошукачі не люблять урлов з cgi-хвостами. Воно, звичайно, нормально, але краще було-б, щоб урли були звичайними, просто урламі собі і урламі. Тими, які ще називають дружніми пошукачам і людино-зрозумілими.
Для вирішення цієї проблеми скористаємося технологією сервлетів, яку я підглянув при вивченні Java. Всі можливості для цього у нас в .NET є, спасибі Біллі =)
Для обробки запитів до контенту напишемо найпростіший обробник, єдиним завданням якого буде маршрутерізація запитів до статики. Оброблювач може бути, наприклад, таким:
Сенс цього обробника в тому, щоб здійснити маршрутерізацію запиту. запити виду
/articles/topic/article.aspx (такої сторінки немає в нашій системі) будуть трансльовані в
/articles/article.aspx?code=topic. Для тих запитів, для яких є відповідний XML. Запити до неіснуючих XML будуть перенаправлені на сторінку зі списком статей. Оброблювач необхідно зареєструвати в web.config, наприклад так:
Тепер запити будуть перехоплені нашим обробником і відправлені до єдиного шаблону, який відтранслює потрібний XML документ.
Таким чином ми звели дублювання коду до мінімуму. Тепер залишається тільки зареєструвати статтю з неіснуючим URL =) в нашому файлі SiteMap "і буде нам порахувати".
Ложки не існує
Наведений приклад демонструє, яким чином динамічні технології можуть допомогти в роботі зі статикою. Зміна одного з компонентів вплине на відображення всіх сторінок статики. І це добре, оскільки мнінмізірует роботу програміста над непрограммістскімі завданнями. Також приклад показує цінність багаторівневих архітектур, одного з найбільш важливих досягнень на сьогодні.
Ви можете копіювати контент, представлений на цій сторінці, повторно публікувати його, вносити зміни, змінювати оформлення (та ін.), За умови розміщення в будь-якому місці скопійованої сторінки будь-якого кольору, розміру і стилю шрифту індексується посилання виду:
Версія для друку