За последние 24 часа нас посетили 18953 программиста и 1608 роботов. Сейчас ищут 844 программиста ...

Статические блоки (опять проектирование)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Koc, 21 июл 2009.

  1. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Есть задумка написать модуль блоков. Ну это когда мы создаем какой-то блок, а потом вызываем его где-нить на какой-то страничке. Например на странице категорий "стиральные машины", "микроволновки" нужно справа повесить какую-нить загогулину, в остальных категориях это делать не нужно. И ясное дело эту загогулину нужно как-то редактировать через админку.

    Так вот, создать функционал таких блоков и сделать возможность их вызова из шаблонов - не проблема. Будет что-то типа
    [!object blocks!]
    'id':3
    [!/object!]
    показ блока с ID=3

    Но получится, что для каждого такого блока будет +1 запрос в БД. Да, я решу эту проблему при помощи кеширования, однако остается мысль будто что-то делаю неправильно.
     
  2. kostyl

    kostyl Guest

    Это ты имеешь в виду для блока или для данных блока? Если первое, то не обязательно хранить ифу о блоке в бд. Можно хранить инфу, что он вообще есть. А все остальное просто на диске валяться будет.
     
  3. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    я бы сделал какой-то "BlockCollector", в него складываешь список всех блоков, которые тебе нужны, а потом он тебе уже одним запросом их берет и возвращает.
     
  4. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    kostyl
    да, инфа о блоке в базе. Но когда мы "насаживаем" этот блок на страничку - нам инфа не нужна, нужно содержимое блока, которое тоже находятся в базе

    TheShock
    дык я не знаю какие блоки нужны будут для конкретной страницы. А выбирать все-все блоки нет смысла: может их там тыща, а мне нужен только один, или два.

    Да, можно парсить 2 раза: первый раз формируем список требуемых ID, второй - достаем их из базы и "насаживаем" на страницу. Но чем делать такое, проще имхо будет включить кеширование.
     
  5. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    а ты узнай список блоков, которые тебе будут нужны, а потом сделай запрос и достань только те, которые нужны.
     
  6. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    То есть, план такой:
    1. Парсишь шаблон
    2. Узнаешь, какие части тебе нужны
    3. Берешь из базы ВСЕ нужные данные
    4. Рендеришь шаблон
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    парсить 2 раза не очень хорошо. У меня по каждому
    [!object name!] создается экземпляр класса TPLO_name, в него отправляются настройки (например ID блока, шаблон в который парсить, как сортировать). Потом вызывается метод show этого объекта. Получается, что для объекта blocks мне нужно менять эту схему, ставить дополнительные парсеры, что как бы некорректно имхо
     
  8. kostyl

    kostyl Guest

    вы слишком все усложняете. Есть шаблон - значит есть блок. Его место определяет другой шаблон. Его появление определяет запрос пользователя. Его образование определяет наличие его готового представления в кеше. Ну может и в кеше его конкретный вид определяет запрос пользователя или его какие то данные. Тоесть в базе храниться максимум: показывает блок при запросе и место блока на странице. Все - в базе хранить больше ничего не нужно.
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ты хочешь вывести данные из БД не делая запроса в БД?
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    и вообще судя по всему ты собираешься вывести какие-то статичные данные? короче говоря текст? и вставить его в другой текст?
    имхо не место такой логике в шаблоне, вставляй текст переменной
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    положение блока на странице определяет шаблон а не база

    Mr.M.I.T.
    нет, я хочу сделать 1 запрос на все блоки для одной страницы, а не идти в базу за каждым блоком
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    так а почему бы тебе тогда не группировать блоки?
    и выводить группу
    и делать это не в шаблоне
     
  13. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    о, теплее. Мне нравится такая идея групп.
     
  14. kostyl

    kostyl Guest

    может в сессии хранить? Или... Вообще зачем тебе блоки, для чего?
     
  15. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    я еще не знаю для чего они мне. Пока и не разрабатываю этот модуль.

    Первое что пришло в голову: у меня есть какая-то менюшка со ссылками на страницы. Генерировать ее через шаблон не могу: там шрифт особый, с эффектами всякими фотожопными, как тут: Home, News, Helena, Gallery, Contact.

    Так вот, эту менюшку мне нужно ж показать как-то. Да, можно ее просто инклюдить в шаблон: [:load menu.htm:]
    Но что если я добавил какой-то пункт, например Download section? Я должен лезть в шаблоны, добавлять там че-то. Да, шаблоны можно будет отредактировать через админку, но это не то. Проще отредактировать статический блок, впихнуть туда еще одно изображение, и менюшка обновится.

    Еще сходу: ну курс валют какой-нить повесить хочу. Не могу я использовать информеры чужие, у меня свой, особый курс.
     
  16. kostyl

    kostyl Guest

    короче тебе надо нормальное занятие найти... ;)