За последние 24 часа нас посетили 20576 программистов и 1635 роботов. Сейчас ищет 1171 программист ...

Организация разделов на сайте

Тема в разделе "Вопросы от блондинок", создана пользователем Kreker, 6 янв 2010.

  1. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    :?
    Сначала делал так:
    Человек заходит и запрашивает раздел. Раздел проверяется на наличие в массиве, после чего подключается нужный контроллер, а в нем идет загрузка данных из необходимой таблицы. В контроллере задавался title и keywords, которые могли зависеть или не зависеть от статьи.

    Теперь хочу лучше, пора расти из этой дыры.
    Что пришло на ум: URI каждой страницы и раздела хранить в таблице pages. При обращении к странице, класс page делает запрос в базу, оттуда получает описание (только для раздела), title, keywords, descripiton, имя контроллера. Далее, подключает контроллер, который уже дополняет заготовок страницы необходимым контентом.

    Но здесь кроется несколько минусов:
    1) Разделов несколько, следовательно, описание раздела тысячам других страниц не нужно.
    2) Постоянный поиск по строке в базе
    3) +1 еще один запрос, на получение этих title, keywords.

    Есть и другое решение, например, для разделов сделать загрузку из таблицы pages, а для обычных страниц, сделать title & keywords в таблице страниц. Например, в таблице news, добавить необходимые поля. Плюсы второго подхода в том, что нет необходимости делать поиск по строке в базе, нет лишнего запроса, а "все" данные можно вытащить одним запросом.

    Что скажете? Как у вас устроено?
     
  2. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  3. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    От этого не уйдешь.

    Я два дня рисовал трехуровневые модели.
    В результате сократил таки до 2х (за полной ненадобностью 3го в маленьких вещах).
    А когда сделал, то осенила идея добавить связи. И тут меня пробило - получилась копия Zend_Table/Row
    Удалил все к черту.
    Еще полчаса вертел Zend_Table. Понял что мне не хватает мелких фишек под мой стиль.
    И за час написал свои модельки заново.

    Вот так и будем ездить.
     
  4. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    У меня вот такая карячка:
    PHP:
    1. <?php
    2. $MainView->AddVar('KEYWORDS', ViewHelper::GetKeyWords());
    Вообще, это класс есть в котором статические свойства. По проходу сценария в него собирается все кейвордсы. Данные беруться просто: из связанных данных как бы, ассоциированных архитектурой.
    PHP:
    1. <?php
    2.         ViewHelper::AddKeyWord($Node->CatName);
    3.         foreach ($Node->Tags as $Tag) {
    4.             ViewHelper::AddKeyWord($Tag->Name);
    5.         }
    6.  
    То есть у меня уже все данные "и так хранятся" и "и так загружаются". Ну вот, если тебе интересно.
     
  5. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    задачу в студию =)
    у меня как то всё без этого получается...
     
  6. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    без велосипедов? :)
    Да что ты мне рассказываешь? :)
     
  7. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    это тестовая версия =)
    и кстати, неплохо работает...пока

    ты мне скажи где нужны таблицы и массивы?
    разве только связки модулей писать
     
  8. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    хорошо, есть там массивы, но это другое =)
     
  9. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Да причем тут таблицы и массивы :)

    я писал о велосипедах вообще.
     
  10. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ты щас хочешь сказать, что возможность впрямого управления роутами из шаблона через УРЛ, есть велосипед? =)
     
  11. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    роутами ли?
    Или все же вызов левых экшенов?

    И да, можешь не акцентироваться на своем коде. Поскольку я в нем не разбирался, а смотрел очень поверхностно.
    Поэтому как оно у тебя на самом деле - понятия не имею.
     
  12. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    там УРЛ есть роут, по сути. без всяких левых таблиц, за исключением автолоада.
    ну реализация там не очень, да. но на идею назжеть не смей =)

    ты мне скажи, где тебе 3х уровневая модель понадобилась?
     
  13. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  14. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я имел ввиду конкретную задачу
     
  15. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Конкретная задача - заготовка под систему уровня ERP.
    Фокус в том, что если писать все правильно, то одному мне надо не меньше года.
    Если писать на костылях, то можно уложиться в 3 месяца.

    А у меня заказ очень сильно перекликается с этим. Приходится себя бить по рукам каждый час, чтобы не усложнять безмерно текущую задачу.
     
  16. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    интересно, а как разбил? =)
    опиши архитектуру в 3х словах
     
  17. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Завернул однако. В 3х словах....

    DataTransportObject - собственно структура не имеет ничего и не делает ничего кроме контроля за своей целостностью. Плюс может содержать в себе ссылку на породивший объект (но я еще не решил, слишком спорный момент).
    И возможно валидацию (хотя это уже слишком).
    DataMapperObject - маппер. может быть несколько. Интерфейс ввода/вывода. Занимается отображением структуры в куда угодно.
    Файл, БД, Форма.
    DataServiceObject - сервисный слой и логика. В ERP она есть и ее весьма много, плюс самих моделей немало, а в обычных задачах 2-3 модели и для нее хватает места в контроллерах или DTO.

    По сути это почти проекция MVC на модель.
     
  18. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Mr.M.I.T.
    Это ясно, а данные страниц как хранятся? В особенности, метаданные.

    ???
     
  19. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Kreker
    ты несколько мудришь.

    У тебя есть некий статический контент - он собирается одним контроллером независимо от раздела (а отдается уже сервером, как статика).

    У тебя есть некий динамический контент - он легко отдается каждый своим контроллером в зависимости от используемых моделей.
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так в таком случае, где хранить данные для метатегов? У каждого раздела может быть своя таблица (или несколько).
     
  21. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Какую роль у тебя выполняют метатеги?
     
  22. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    SEO :D
     
  23. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    И часто они меняются?
    Забей их в шапку раздела. Можно сделать в админке массовую установку.
     
  24. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    На каждую страницу свои.
     
  25. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    и это круто. Можно даже зациклить !!! ;) Тоже таким страдаю.
    не понял, что ты не понял?!! ))