Получение документа по url?

С.

Продвинутый новичок
Ну с чего они разные-то? Там разные тумбочки что ли? Информация на странице одинаковая, разве кроме хлебных крошек, но для гуглов это не важно.
 

Tartyga

Новичок
Ну с чего они разные-то? Там разные тумбочки что ли? Информация на странице одинаковая, разве кроме хлебных крошек, но для гуглов это не важно.
Оооо, блин. Да, да, разные страницы.
site.ru/o_kompanii/raboty/tumbochki.html - Смотрите какие мы офигенные тумбочки делаем, такие вот красивые и удобные, вот вам несколько фоточек и всякая подобная хрень.
site.ru/katalog/mebel/tumbochki.html - А здесь список того дерьма, что у нас на складе, выбирайте заказывайте и т.д. и т.п.

Я не из головы придумал подобную ситуацию, реально сталкивался с подобным, тем более если сайт наполняет сам заказчик, ну, там девочка какая нибудь!!
 

С.

Продвинутый новичок
И ради этого весь сыр-бор? Все еще запущенее оказалось. Надо же придумать себе проблему на ровном месте!
Ты просил оптимальное решение? Его у меня есть:

site.ru/o_kompanii/raboty/tumbochki-delaem.html
site.ru/katalog/mebel/tumbochki-prodaem.html

Дешево, оптимально, и не надо гнуть фреймворк.
 

Tartyga

Новичок
И ради этого весь сыр-бор? Все еще запущенее оказалось.
Так не я же раздул, вопрос был простой и по большей степени теоритический!))
Надо же придумать себе проблему на ровном месте!
Я уже писал, что не я придумал проблему. Пример я привел немного примитивный, но такое случается в реальной работе, особенно во всяких каталогах с товарами.
Дешево, оптимально, и не надо гнуть фреймворк.
Это выглядит примерно так:
- Ребята, мне нужен был стеклянный столик, а вы мне сделали из пластика? У меня уже есть такой!
- Не, ну а че, тоже ведь прозрачный, просто нам не кайф было стекло сверлить, чтобы ножки прикрутить!
 

С.

Продвинутый новичок
Я уже писал, что не я придумал проблему. Пример я привел немного примитивный, но такое случается в реальной работе, особенно во всяких каталогах с товарами.
Опять за рыбу деньги! Для "всяких каталогов товаров" действительно все, что написано тебе на первой странице. Твой пример с тумбочками никакого отношения к каталогам не имеет и решается по-другому.
 

keltanas

marty cats
Tartyga
В общем, если ты создаешь страницы site.ru/o_kompanii/raboty/tumbochki.html и site.ru/katalog/mebel/tumbochki.html, то не надо потом менять их адреса. А если меняешь, то ставь 301 редирект. Это тебе пытались объяснить.
Так что храни их адреса в виде raboty/tumbochki и katalog/mebel/tumbochki и не парься. Пересобирать тоже лучше не надо. Менять их адреса в последствии вряд-ли кому-то придет в голову.

Надо же, то есть, мое стремление сделать гибких функционал админки и чтобы сайт не загнулся на 100к запросах - это узкое мышление?!)
100к запросов к админке? Это ты на несколько порядков перегибаешь. Даже если имеется в виду количество запросов в час.
 

Tartyga

Новичок
В общем, если ты создаешь страницы site.ru/o_kompanii/raboty/tumbochki.html и site.ru/katalog/mebel/tumbochki.html, то не надо потом менять их адреса. А если меняешь, то ставь 301 редирект.
Спасибо, я в курсе!
Это тебе пытались объяснить.
А я не про это спрашивал!
Так что храни их адреса в виде raboty/tumbochki и katalog/mebel/tumbochki и не парься.
Как думаете, что быстрее будет:
PHP:
SELECT * FROM pages WHERE alias='katalog/mebel/tumbochki' или SELECT * FROM pages WHERE alias='tumbochki'
Пересобирать тоже лучше не надо. Менять их адреса в последствии вряд-ли кому-то придет в голову.
Придет, не придет, просто хочу чтобы такая возможность была!
100к запросов к админке?
нет, речь идет о фронтенде!
 

keltanas

marty cats
Спасибо, я в курсе!
А я не про это спрашивал!
Придет, не придет, просто хочу чтобы такая возможность была!
Сам себе противоречишь. Определись уже, чего хочешь?
Как думаете, что быстрее будет:
PHP:
SELECT * FROM pages WHERE alias='katalog/mebel/tumbochki' или SELECT * FROM pages WHERE alias='tumbochki'
В твоей ситуации вообще пофигу.
нет, речь идет о фронтенде!
Боишься, что из-за SQL-запроса лягут JavaScript или CSS?
 

AmdY

Пью пиво
Команда форума
Tartyga
а что будет если у тебя тумбочки в разных отделах, например офисная бебель, спальня, детская. там везде тумбочки, но разные. второй вариант имеет проблему коллизий.
 

Tartyga

Новичок
AmdY
а что будет если у тебя тумбочки в разных отделах, например офисная бебель, спальня, детская. там везде тумбочки, но разные. второй вариант имеет проблему коллизий.
Во, первый человек по теме спросил!)))) Я выше писал, что во втором варианте если более одного результата, делать исключение по родителю! Это и была суть вопроса, что лучше выбрать, так как у каждого варианта есть свои плюсы и минусы.
Повторю:
1. хранить весь путь к документу, если в случае манагеру взбредет в голову поменять псевдоним документа, то тогда придется менять урлы у все дочерних документов! Я понимаю, что это не стоит делать (как многие писали выше), но вдруг такая ситуация, что контент-менеджер добавил раздел, потом в него 100500 страниц (еще ничего поисковиками не проиндексировалось) и тут смотрит, псевдоним у раздела ему не нравится.
2. Второй вариант более гибкий, на мой взгляд, поиск документа быстрее, меньше хлама в базе, зато есть опасность получить много итераций. Но все это решается кешированием, поэтому я и выбрал этот вариант.
 

AmdY

Пью пиво
Команда форума
Tartyga
если у тебя дерево, то можно просто в выборку добавлять
SELECT * FROM pages WHERE alias='tumbochki' AND parent_id = ?
 

Tartyga

Новичок
AmdY
если у тебя дерево, то можно просто в выборку добавлять
SELECT * FROM pages WHERE alias='tumbochki' AND parent_id = ?
Точнее даже вот так:
PHP:
SELECT t1.* FROM pages t1, pages t2 WHERE t1.alias='tumbochki' AND t2.alias='detskaya' AND t2.id=t1.parent
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
Tartyga
только left join вместо FROM pages t1, pages
 

stopkran

Дилетант
Точнее даже вот так:
PHP:
SELECT t1.* FROM pages t1, pages t2 WHERE t1.alias='tumbochki' AND t2.alias='detskaya' AND t2.id=t1.parent
А можно ли при такой схеме (parent - id) выбрать все товары, допустим, из группы Детская: тумбочки, кроватки, коврики?..

По наименованиям: я при таких коллизиях обычно использую что-то вроде tumbochki_prodaem, tumbochki_izgotovim. Изготовление или продажа - это существенно для покупателя и ПС, поэтому всегда стараюсь указывать это в title (и попутно в url, если уж делаем транслитом) максимально подробно.
 

Tartyga

Новичок
stopkran
Ну, во-первых AmdY правильно сказал, лучше использовать left join, я привел упрощенный статичный пример.
А можно ли при такой схеме (parent - id) выбрать все товары, допустим, из группы Детская: тумбочки, кроватки, коврики?..
Не совсем понял вопроса, что значит "выбирать все товары"? Если для вывода списка товаров на странице, то это немного другое!
Опять же, смотря как устроена админка. У меня есть name(чисто для вывода в дереве ресурсов), title(заголовок страницы <H1>) и отдельно meta - title,description,keywords и прочее.
 

stopkran

Дилетант
Не совсем понял вопроса, что значит "выбирать все товары"? Если для вывода списка товаров на странице, то это немного другое!
Да, для вывода товаров на странице (можно ли использовать в этом случае дерево только на основе id-parent). Ну, если не входит в эту тему, тогда ладно.
 

Тугай

Новичок
Так лучше:
PHP:
$result = mysql_query("SELECT * FROM `pages` WHERE `alias`='razdel/category/my_page.html'");
И добавить еще alias_short (или node_name), короче совместить оба варианта.
 

Tartyga

Новичок
Тугай
И добавить еще alias_short (или node_name), короче совместить оба варианта.
А смысл? Смотри, например мы меняем "razdel/category/my_page.html" на "rasdel/category/my_page.html" и придется менять путь уже во всех дочерних, да знаю, переименовывать это зло, но все же!))
Вообще случаи с повторением псевдонимов вероятно будут редкими, поэтому поиск по короткому алиасу вполне оправдан, просто подстраховаться на всякий случай!
 
Сверху