Есть задумка написать модуль блоков. Ну это когда мы создаем какой-то блок, а потом вызываем его где-нить на какой-то страничке. Например на странице категорий "стиральные машины", "микроволновки" нужно справа повесить какую-нить загогулину, в остальных категориях это делать не нужно. И ясное дело эту загогулину нужно как-то редактировать через админку. Так вот, создать функционал таких блоков и сделать возможность их вызова из шаблонов - не проблема. Будет что-то типа [!object blocks!] 'id':3 [!/object!] показ блока с ID=3 Но получится, что для каждого такого блока будет +1 запрос в БД. Да, я решу эту проблему при помощи кеширования, однако остается мысль будто что-то делаю неправильно.
Это ты имеешь в виду для блока или для данных блока? Если первое, то не обязательно хранить ифу о блоке в бд. Можно хранить инфу, что он вообще есть. А все остальное просто на диске валяться будет.
я бы сделал какой-то "BlockCollector", в него складываешь список всех блоков, которые тебе нужны, а потом он тебе уже одним запросом их берет и возвращает.
kostyl да, инфа о блоке в базе. Но когда мы "насаживаем" этот блок на страничку - нам инфа не нужна, нужно содержимое блока, которое тоже находятся в базе TheShock дык я не знаю какие блоки нужны будут для конкретной страницы. А выбирать все-все блоки нет смысла: может их там тыща, а мне нужен только один, или два. Да, можно парсить 2 раза: первый раз формируем список требуемых ID, второй - достаем их из базы и "насаживаем" на страницу. Но чем делать такое, проще имхо будет включить кеширование.
а ты узнай список блоков, которые тебе будут нужны, а потом сделай запрос и достань только те, которые нужны.
То есть, план такой: 1. Парсишь шаблон 2. Узнаешь, какие части тебе нужны 3. Берешь из базы ВСЕ нужные данные 4. Рендеришь шаблон
парсить 2 раза не очень хорошо. У меня по каждому [!object name!] создается экземпляр класса TPLO_name, в него отправляются настройки (например ID блока, шаблон в который парсить, как сортировать). Потом вызывается метод show этого объекта. Получается, что для объекта blocks мне нужно менять эту схему, ставить дополнительные парсеры, что как бы некорректно имхо
вы слишком все усложняете. Есть шаблон - значит есть блок. Его место определяет другой шаблон. Его появление определяет запрос пользователя. Его образование определяет наличие его готового представления в кеше. Ну может и в кеше его конкретный вид определяет запрос пользователя или его какие то данные. Тоесть в базе храниться максимум: показывает блок при запросе и место блока на странице. Все - в базе хранить больше ничего не нужно.
и вообще судя по всему ты собираешься вывести какие-то статичные данные? короче говоря текст? и вставить его в другой текст? имхо не место такой логике в шаблоне, вставляй текст переменной
положение блока на странице определяет шаблон а не база Mr.M.I.T. нет, я хочу сделать 1 запрос на все блоки для одной страницы, а не идти в базу за каждым блоком
я еще не знаю для чего они мне. Пока и не разрабатываю этот модуль. Первое что пришло в голову: у меня есть какая-то менюшка со ссылками на страницы. Генерировать ее через шаблон не могу: там шрифт особый, с эффектами всякими фотожопными, как тут: Home, News, Helena, Gallery, Contact. Так вот, эту менюшку мне нужно ж показать как-то. Да, можно ее просто инклюдить в шаблон: [:load menu.htm:] Но что если я добавил какой-то пункт, например Download section? Я должен лезть в шаблоны, добавлять там че-то. Да, шаблоны можно будет отредактировать через админку, но это не то. Проще отредактировать статический блок, впихнуть туда еще одно изображение, и менюшка обновится. Еще сходу: ну курс валют какой-нить повесить хочу. Не могу я использовать информеры чужие, у меня свой, особый курс.