Блог — К новой Волге34 на новом велосипеде
02 июня 2007 в 12.13
Автор: Сергей Калаус
Сегодня закончил программирование проекта "Справка о рекламе" ( www.reklamateka.ru). Получилась довольно-таки навороченная штука, хотелось бы рассказать о ней поподробнее
Главная особенность сайта состоит в том, что в нем использованы самые новые скрипты, которые у нас есть. Вообще, этот сайт является в каком-то роде полигоном для испытания инструментов, с помощью которых в ближайший месяц будет создаваться ядро новой Волги34. Это была очень хорошая возможность проверить степень гибкости строительного материала нового портала.
Чем "Справка о рекламе" отличается от предыдущих сайтов:
1. Использует новую версию библиотеки классов и функций ikernel2. Вообще, с помощью этих классов уже написан ряд сайтов: www.vmarathon.ru, www.dikam.ru, www.vlkz.intervolga.ru, www.webup.ru, однако "Справка о рекламе" использует эту библиотеку более интенсивно.
2. Применена новый способ построения интерфейса сайта. Смысл его состоит в том, что расположение блоков на страницах сайта, набор страниц не прописываются в коде. Вся структура хранится в БД в виде наборов вложенных друг в друга панелей и информеров.
Для каждой страницы задается шаблон фрейма, обычно это что-то типа html head /head body /body /html. Затем на фрейм начинают навешиваться панели, в них - другие панели, на самой вершине структуры находятся информеры - блоки, которые не относятся к layout, а выводят непосредственно текст страницы. Каждая панель может содержать другие панели и информеры, выровненные горизонтально или вертикально. С помощью такой сетки можно описать сруктуру любого сайта. На первый взгляд кажется, что это подойдет только для блочных сайтов, но это не так. ведь панели задают лишь расположение, а элементы дизайна могут быть оформлены как угодно. В справке о рекламе панели являются талбицами (хтмл тэг TABLE) - это ее недостаток, вообще в Волге34 планируется использовать для целей позиционирования блоков ul li /li /ul + div /div.
3. Больше нет единой функции, которая выводит страницу. Страница - это по сути набор информеров, которые рендерятся в соответствии с расположением панелей. Построение страницы Справки о рекламе - это рекурсивный проход всех вложенных панелей и вызов функций вывода информеров. Получается ситуация, когда каждый информер не имеет представления о том, что выводится в остальных. Информер узнает что ему следует показывать из 2 источников: настроек информера (делаются администратором), параметров _GET, которые доступны везде.
4. Структура сайта задается набором представлений. Каждое представление - это и есть гирлянда панелей и информеров, которая выстраивается при посещении пользователем заданных url на сайте. Например для раздела новости задано 2 шаблона урл: /news/ и /news/page/. При посещении первого открывается начало раздела, второй позволяет перемещаться по страницам новостей, при этом все что попадает в {page} передается в _GET[page]. для минисайтов справки о рекламе шаблоны несколько сложнее.

5. Впервые использованы классы вкладок c_tab_view и c_tab. эти классы позволяют делать вкладки в любом их виде: слева, свпара, кнопками, подгружаемые вкладки и т.д.. Визуальные качества этого контрола ограничиваются только уровнем знаний html, css, javascript программистом, применяющим эти классы. Пример в справке о рекламе: панель заказа рекламы справа и паенли регистрации.
6. Переодетый WebMaster. Пришлось переодеть нашу админку, так как у заказчика она полуоткрытая для посетителей и должна соотвтетствовать дизайну сайта. Переодевание ограничилось изменением 2 шаблонов - фрейма админки и панели авторизации. Слава шаблонам, подгружаемым "хрен знает откуда"!!!
Сайт просто забит всякими аякс-фишками: сообщения об ошибках, переключение вкладок, админка на аякс, поиск, авторизация, просмотр заявок. Впечатления от работы с новыми библиотеками смешанные: логику сайта создавать лекго, выстраивать навигацию - тоже. многое стало более универсальным, и уже не приходится за каждым изменением лезть на ФТП, достаточно зайти в админку и после 5 минут работы можно коренным образом изменить вид сайта. НО программирование стало более трудоемким в плане обилия рутинных операций создания информеров и функций для каждого действия (для сайта написано 72 функции и 74 шаблона), хотя, с другой стороны, именно этот способ подходит для больших сайтов, ибо модульно. не приходится заботиться о том как это работает вцелом, а решать конкретные задачи. в конце концов, писать SQL запросы руками я перестал около года назад. сейчас уже для создания сайта требуется отредактированть дефайны, создать шаблоны, написать функции информеров и все это упорядочить в админке.