За последние 24 часа нас посетили 22836 программистов и 1266 роботов. Сейчас ищут 767 программистов ...

Реализация произвольных ЧПУ. [Рассуждение, поиск алгоритма]

Тема в разделе "Решения, алгоритмы", создана пользователем Koc, 1 мар 2009.

  1. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    "но можно" ;))

    а это хорошо или плохо? ;)

    можете предложить ваши решения описанной выше задачи?
     
  2. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    уже писал
    1. Для начала сделать так (всё остальное не нужно для вывода публикации)
    2. Дальше всё понятно, имеем 2 модуля news и rubric, первый выводит новость по ID в данном случае new_carib2009, рубрики тоже выводят публикации по ID, я так понял это последовательность от 88 до 95
     
  3. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    не знаю что тебе больше нравится, сложно или просто =)
     
  4. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    Mr.M.I.T.
    вашу мысль я понял и ничего против не имею :) каждому своё.

    просто я для себя ставлю задачи подобные этим, когда в одном проекте могут встречаться такие ссылки, со всеми вытекающими:

    http://mysite.ru/rubric/auto/catalog/to ... rib/88-95/
    http://mysite.ru/rubric/auto/news/toyot ... b2009.html
    http://mysite.ru/rubric/hi-fi/catalog/a ... tion/f-30/
    http://mysite.ru/rubric/bikes/catalog/m ... tions.html
    http://mysite.ru/news/around_the_world/yahoo.html
    http://mysite.ru/about/company/

    притом вполне может существовать и англоязычный вариант, по ссылкам вида:
    http://mysite.com/rubric/hi-fi/catalog/ ... tion/f-30/
    http://mysite.com/news/around_the_world/yahoo.html

    или:
    http://mysite.ru/eng/about/company/
    http://mysite.ru/eng/rubric/bikes/catal ... tions.html

    а также, для разных разделов, может быть разные элементы дизайна и т.д. и т.п.

    на самом деле принцип построения данных исходя из запрошенного УРИ, который я описал выше, весьма прост и в тоже время имеет очень большие возможности, в любой момент можно любой фрагмент структуры данных перенести в другое место, что угодно и куда угодно добавить и т.д.

    мой принцип скорее звучит так: максимально функционально, гибко и логически интуитивно понятно :)

    ЗЫ: кстати, кто как думает, как сделан https://addons.mozilla.org/ ? ;)
     
  5. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    половину из этих ссылок можно(и нужно) просто выкинуть
    сессии
    настройка индивидуальных шаблонов для категорий
    в моём случае тоже самое =)
    а "мой" добавляет к этому ещё и "быстро и просто"
     
  6. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    есть таблица со полем action. Примерные значения этого поля:
    {"do":"showCat","id":"6"}
    {"do":"showCat","id":"11"}
    {"do":"showCat","id":"24"}
    {"do":"showCat","id":"2"}

    нужно выбрать те записи, id которых 6 и 24. Если id было поле - то запрос был бы такой:
    SELECT * WHERE id IN (6,24);

    Но у нас id внутри строки. Как быть?
     
  7. Mr.M.I.T.

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

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

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

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

    То, что в отдельной ячейке хранить можно - ясно. А если у меня одна и та же запись имеет несколько идентификаторов, (id=10, cid=12, uid=4) - создавать еще + 2 поля?
     
  9. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    идентификатор должен быть один и всегда уникальным, остальное всё связки(например связка публикации с категорией по идентификатору категории),
    в таком случае создай ешё 2 поля
     
  10. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    бу-го-го! Я труЪ идиот.

    Сейчас жрал курицу на кухне, и до меня дошло, что проблема решается гораздо проще. Будет вам мега ЧПУ, совсем скоро.
     
  11. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Я когда вспоминаю сайты на которых бывал, то ввожу в FF что удалось запомнить (либо что то из URL, либо из титла), и он вываливает список совпадений.


    В принципе можно использовать traslit+id, например
    PHP:
    1.  
    2. <?php
    3. $str = 'Vzriv-v-centre-goroda-5874';
    4.  
    5. $id = substr($str, strrpos($str, '-'));
    6.  
    7. // далее select * from news where id=$id
    8. ?>
    9.  
    Чтобы урлы не были длинные, можно брать первый несколько символов заголовка новости
     
  12. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    флоппик
    А если article это название модуля, который надо загрузить? У меня к примеру это так: /модуль/метод/параметр1/параметр2 и.т.д. Как правило хватает 3-х слешей :)
     
  13. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    флоппик
    я с начала спора призываю выкидывать из урла всё лишнее
    Psih
    тоже самое, только без параметров, в ZF тоже вроде параметров нет
     
  14. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    Давайте всёже вернёмся к выше описанному примеру, допустим клиент хочет, что бы на главной страничке были следующие раздеры:

    1) Новости
    2) О компании
    3) Рубрики
    4) Контакты
    5) Акции

    в новостях просто новостная лента, во 2, 4 и 5 разделе просто текстовочки с картинками, а вот в разделе 3 (Рубрики) будет постоянно поподняющееся кол-во этих самых рубрик, притом у каждый их них могут быть свои особенности, например у "Авто" есть каталог самих автомобилей, а также каталог магазинов, в "Вело" есть куча статей, в "Hi-Fi" фотогалерея и т.д.

    т.е. у каждой рубрики есть своя структура и разным пользователям сайта даны разные права на разные разделы сайта т.е. кто-то может писать во все рубрики, но не иметь доступ к разделу "о компании", а кто-то например может писать только обзоры по автомобилям, а другой только новости авто и т.д.

    но с правами это другая история ;) мой вопрос будет звучать так: как по вашему мнению должны выглядеть ссылки (УРИ) для такой структуры?
     
  15. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    /rubric/ - выводит доступные рубрики
    /rubric/catalog/ - все категории каталога
    /rubric/catalog/auto/ - категория авто
    /rubric/catalog/10/ - конкретная публикация каталога
    /rubric/articles/auto/ - категория авто, в статьях
    /rubric/articles/10/ - конкретная статья

    будь моя воля я бы вообще убрал рубрики заненадобностью, и оформил бы каталог, статьи как отдельные модули
     
  16. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Вопрос:
    1) нужна ли поддержка кириллицы в урах?
    2) нужны ли алиасы? (/monitor-931cw и /931cw ведут на одну и ту же страницу, мы можем одному товару назначить сразу несколько ссылок)
     
  17. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    1. Надо - делай
    2. Надо - делай
     
  18. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    У меня раньше было поле поиска, с выходом 3-й лисы не понимаю, нафига оно надо…
     
  19. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    да, согласен, вариант когда создаётся один экземляр каталога в внутри него уже идёт разделение по категориям вполне жизнеспособный :) просто мне как-то ближе для понимания, когда есть какая то определённая рубрика а внутри ней уже всё, что к ней относится, в частности свои отдельные экземпляры каталога, притом скрипты отвечающие за каталог разумеется одни на все экземпляры, а вот БД можно как отделить в отдельные таблицы, так и держать все каталоги в одном наборе таблиц для всех категорий.
     
  20. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    и как вы будите всё это админить?
    например нет у меня статей, я хочу добавить, вам придётся, к каждой категории прикручивать модуль статей, категорий может быть много =)
    мне для этого надо просто кинуть файлик в папку moduls =)
     
  21. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    у меня никаких "кинуть файликов" нету. все настройки модулей и папок и где это всё находится и как связано , хранится в БД. категории каталога так же будут задаваться через админку самого модуля каталога...

    можете скачать сырец с http://digi.org.ru/engine_wiki/ и посмотреть структуру БД :)
     
  22. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я имел ввиду, как добавить новый модуль
     
  23. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    принципиально новый модуль в саму систему добавить? или например в пупку auto есть модуль каталога, а надо еще добавить модуль тоже каталога в папку hi-fi?
     
  24. Mr.M.I.T.

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

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