В шаблонах разных страниц неизбежно есть повторяющиеся элементы. В случае динамической генерации страниц, вынесение их в общую функцию решается просто. В Stilllife решить эту задачу несколько сложнее.
21.03.2008 17:02 (ссылка) (в ответ на) | |
vitus-wagner.livejournal.com Статус: Пользователь Email: vitus@wagner.pp.ru |
В шаблонах неизбежно возникают повторяющиеся части. Например, весьма часто на всех страницах бывают общий хидер и футер Кроме того, есть специфические для Stilllife вещи - например, встроенная в шаблон темы форма отправки реплики практически повторяет отдельный шаблон формы отправки реплики. А набор полей для ввода информации о пользователе (user, openidsite, password) практичеки одинаковый в форме логина и в форме реплики). (и, что самое обидное, именно в этом месте имеется список шаблонов openid-url для широкоизвестных сайтов, который хочется уметь оперативно изменять) Есть еще операция переприменения измененного шаблона ко всем уже созданным статическим страницам. Но с ней более-менее все понятно - берем каждый содержательный элемент на странице на редактирование, и сохраняем уже в новый шаблон. Операция затратная, но, либо у нас дизайн форума находится в состоянии разработки, и содержательных элементов мало, либо форум живет, и операция изменения дизайна крайне редкая. На эти затраты можно пойти Но вот вопрос со выделением общих элементов шаблонов и разработки и модификации его в одном месте в процессе разработки стоит остро. Пока придумалась следующая концепция: Имеем специальный шаблон оформления. В нем есть элемент с идентификатором content. Если этот шаблон изменился, берем все шаблоны, находим в них элемент с тем же идентификатором, и заменяем в копии шаблона оформления этот этот элемент на элемент из старого шаблона. С задачей хидера/футера эта операция справляется. А вот с задачей общих элементов вроде <div id="replyform"> - не очень. Во-первых, этот элемент нужен далеко не во всех шаблонах. Во-вторых кто сказал, что мы можем ограничиться положением этих элементов за пределами <div if="content">? Одна из возникших мыслей - если в шаблоне оформления внутри <div if="content"> имеются элементы с явно прописанным id, то в каждом шаблоне, к которому применяется оформление, мы ищем аналогичный id внутри содержимого, и если он найден, заменяем его на соответствующий из шаблона. -- |
04.04.2008 08:18 (ссылка) (в ответ на) | |
taris-marh.livejournal.com![]() Статус: Email: |
Можно использовать синтаксис типа SSI: при формировании новой темы страница будет создаваться из шаблона (всё равно скрипт запускается), а потом форма уже будет воткнута на место, в страницу. Внешняя форма же настраивается при установке нового дизайна. |
04.04.2008 08:21 (ссылка) (в ответ на) | |
taris-marh.livejournal.com![]() Статус: Email: |
Кстати, эту форму вообще можно подгружать через AJAX (XMLHttpRequest). |
04.04.2008 12:57 (ссылка) (в ответ на) | |
vitus-wagner.livejournal.com Статус: Пользователь Email: vitus@wagner.pp.ru |
В принципе, можно. Но нужно ли? Устанвка нового дизайна - вещь довольно редкая. И один раз при этой установке отпроцесированть шаблон темы, а потом при создании новой темы использовать только его, может оказаться осмысленным. Создание темы - куда более частая операция, чем смена дизайна -- |
04.04.2008 13:00 (ссылка) (в ответ на) | |
vitus-wagner.livejournal.com Статус: Пользователь Email: vitus@wagner.pp.ru |
Кстати, эту форму вообще можно подгружать через AJAX То же самое. Можно. Но нужно ли? Что мы на этом теряем - лишний запрос к серверу. Что приобретаем - возможность не проверять когда изменился дизайн формы Вот над идеей подгружать только список известных OpenID-сайтов я уже думал. -- |
04.04.2008 13:05 (ссылка) (в ответ на) | |
vitus-wagner.livejournal.com Статус: Пользователь Email: vitus@wagner.pp.ru |
Кстати, эту форму вообще можно подгружать через AJAX Вообще, надо бы сделать набор шаблонов с подгрузкой этой формы по AJAX и подумать о том, как бы сравнить удобство использования того и другого. -- |
08.04.2008 09:28 (ссылка) (в ответ на) | |
taris-marh.livejournal.com![]() Статус: Email: |
Думаю, это будет ясно только при большой нагрузке или плохом канале: тогда дополнительный запрос будет не в +. В остальных же случаях, как мне кажется, оно будет удобнее. |