- 1. Можно в лоб сделать паука, который будет обходить сайт и собирать локальные ссылки. Минусы этого метода, думаю, понятны. Плюс только в понятной и простой реализации.
2. Можно сделать какой-то более изящный способ получения всех возможных ссылок. Проблема в том, что используемый мной движок имеет отдельные практически независимые модули для каждого логического раздела. Дизайн генерится смарти и сколько каких ссылок было воткнуто неизвестно. Единственное, что могу легко собрать - статические страницы, которые генерятся отдельным общим кодом и их адреса известны заранее.
3. Сделать препроцессор сгенерированного html от шаблонизатора и выдёргивать локальные ссылки оттуда парсером, собирая их.
4. Какой-то иной вариант, о котором по своему скудоумию даже и не помышляю.
А как вы реализуете сайтмап у себя?
Спустя 43 минуты, 21 секунда (19.05.2012 - 00:34) walerus написал(а):
Ну это... как его, ссылки на страницы или... точнее как формируются страницы то?, из базы дергаются? или иным методом... У меня когда был говносайт, с кодом писавшемся на коленке в вагоне купе, тупо страницы создавались в папке, т.е. имя файла === имя странице, я делал простой сайт мап - тупо скан каталога, разбивал его на страницы допустим по 100, что бы гугл не офигевал, т.к. страниц было "100500", и норм, жрал гугл через гугл вебмастер с удовольствием... Если же с базой - то я думаю еще проще сделать...
Или я его то не так понял ?
Или я его то не так понял ?

Спустя 8 минут, 24 секунды (19.05.2012 - 00:43) Nikitian написал(а):
Страницы формируются модулями. Модуль - это некий класс. Обращение к нему может быть как в корень по имени, так и с параметрами, сложенными в адресной строке например в таком виде /modulename/param1/val1/param2/val2/param3/val3/...... Соответственно у каждого модуля свой набор обрабатываемых параметров. Этот набор кроме самого модуля никому не известен. А чаще, каждый экшн модуля имеетсвой набор параметров. Как-то так, суть, что набор результирующих ссылок собрать хз как...
Спустя 10 часов, 20 минут, 59 секунд (19.05.2012 - 11:04) vagrand написал(а):
Как по мне не стоит заморачиваться - делайте паука
Спустя 30 минут, 12 секунд (19.05.2012 - 11:34) Invis1ble написал(а):
я б наверное написал паука и по ночам индексацию запускал бы
Спустя 3 часа, 32 минуты, 31 секунда (19.05.2012 - 15:06) Nikitian написал(а):
Неужели никому таких требований клиенты не выставляли?
Паук, конечно, дело не хитрое, но вот как-то этот вариант в последнюю очередь рассматриваю. Сейчас думаю как оптимизировать для прозрачной и быстрой работы выдёргивание ссылок из сгенерированных шаблонов. С регулярками не особо быстро получается, а уж с phpquery и подавно. Даже если асинхронно это делать, всё-равно надо как-то совсем быстро, либо по-другому.... Давайте, колитесь как реализовывали или видели реализации?
Паук, конечно, дело не хитрое, но вот как-то этот вариант в последнюю очередь рассматриваю. Сейчас думаю как оптимизировать для прозрачной и быстрой работы выдёргивание ссылок из сгенерированных шаблонов. С регулярками не особо быстро получается, а уж с phpquery и подавно. Даже если асинхронно это делать, всё-равно надо как-то совсем быстро, либо по-другому.... Давайте, колитесь как реализовывали или видели реализации?
Спустя 32 минуты, 39 секунд (19.05.2012 - 15:39) Michael написал(а):
сам не смотрел, но может это какую мысль подкинет.
У меня лично все жестко, страницы( в т.ч. материалы) из бд можно получить, т.е. ни о каком парсинге из html-a речь не идет. И если честно парсинг, как то...
У меня лично все жестко, страницы( в т.ч. материалы) из бд можно получить, т.е. ни о каком парсинге из html-a речь не идет. И если честно парсинг, как то...
Спустя 1 час, 1 минута, 53 секунды (19.05.2012 - 16:41) Nikitian написал(а):
Michael
Спасибо, но там похоже заранее известно какие сущности имеются и какие страницы будут использоваться.
Появилась ещё одна идея: генерировать сайтмап по факту: зашёл на страницу, если её нет, то добавить в список. Ну и каким-нибудь макаром пропинговывать основные создаваемые страницы, чтобы они добавлялись в сайтмап. Так хотя бы основные страницы всегда будут актуальные в сайтмапе.
Как такой вариант?
Спасибо, но там похоже заранее известно какие сущности имеются и какие страницы будут использоваться.
Появилась ещё одна идея: генерировать сайтмап по факту: зашёл на страницу, если её нет, то добавить в список. Ну и каким-нибудь макаром пропинговывать основные создаваемые страницы, чтобы они добавлялись в сайтмап. Так хотя бы основные страницы всегда будут актуальные в сайтмапе.
Как такой вариант?
Спустя 3 часа, 3 минуты, 11 секунд (19.05.2012 - 19:44) walerus написал(а):
Можно конечно и так сделать, как ты написал, но смысл сайтмапа каков?, с какой целью его создавать ?, что бы пользователи шоркались, или же для сео ?
для 1го варианта, минусы - мы не указываем всех страниц, куда можно перейти пользователю,
для 2го варианта, минусы - что будут "обрабатыватьсяспамиться одни и те же урлы...
Собери выдачу гугла/яндекса, вот тебе и будет твой актуальный сайт мап.
для 1го варианта, минусы - мы не указываем всех страниц, куда можно перейти пользователю,
для 2го варианта, минусы - что будут "обрабатываться
Собери выдачу гугла/яндекса, вот тебе и будет твой актуальный сайт мап.
Спустя 11 минут, 49 секунд (19.05.2012 - 19:56) Nikitian написал(а):
Когда делаем новый сайт, выдачи никакой нет. Опыть же для сайтов с динмично меняющимся контентом (сайт из примера - доска объявлений) важно как можно скорее дать поисковикам возможность найти страницу, а не ждать, когда они сами её найдут.
Спустя 6 часов, 4 минуты, 5 секунд (20.05.2012 - 02:00) walerus написал(а):
Как то не совсем понятно, вначале ты пишешь - "Пишу клиенту сайт. Он давно уже запущен", так ты пишешь сайт или дорабатываешь? - если все сам писал, то почему появляется проблема создания сайтмапа? - страница в итоге, где то, как то формируется? хоть динамически, хоть статически, ты получается должен знать, как и где эта страница отобразится
Цитата |
Страницы формируются модулями. Модуль - это некий класс. Обращение к нему может быть как в корень по имени, так и с параметрами, сложенными в адресной строке например в таком виде /modulename/param1/val1/param2/val2/param3/val3/...... |
в любом случае, эти параметры как то "разбираются", что бы было понятно какой из модулей нужно подключать, вот из этих данных и формировать урл для сайтмапа...
Спустя 4 часа, 47 минут, 37 секунд (20.05.2012 - 06:48) Nikitian написал(а):
Хочу сделать общий модуль не только для этого клиента, что бы и другие не ставили в тупик вопросом: "Где сайтмап?"
Спустя 7 часов, 51 минута, 36 секунд (20.05.2012 - 14:39) walerus написал(а):
Я наверно малость не догоняю, вы уж простите ), общий модуль не получится, скорее всего... точнее как, модуль то написать можно, но он от каких то данных должен отталкиваться, допустим как я писал уже выше, был говноскрипт, тупа делал статику на сервере, я сканил папку с файлами, вот тебе и сайтмап, 2й вариант, юзается БД, никаких файлов нет, статики нет, все динамически через ЧПУ(допустим), тут как быть? - страница тоже не будет известна, если допустим она будет генерироваться на лету( я имею ввиду новые страницы ) и забиваться в базу. Я бы сделал так, перед, заносом в базу, писал бы все сгенеренные урлы в другую БД(сатмапа) ну или как то так.
Я к чему веду, что если ты все сам будешь в дальнейшем писать, то модуль как бы можно примотать, но как быть, если ты что то будешь ДОписывать, тут уже придется либо модуль корректировать, либо тот скрипт, под модуль корректировать.
p.s. Повторюсь, если же я опять все правильно понимаю
Я к чему веду, что если ты все сам будешь в дальнейшем писать, то модуль как бы можно примотать, но как быть, если ты что то будешь ДОписывать, тут уже придется либо модуль корректировать, либо тот скрипт, под модуль корректировать.
p.s. Повторюсь, если же я опять все правильно понимаю

Спустя 21 минута, 21 секунда (20.05.2012 - 15:01) FatCat написал(а):
Цитата (Nikitian @ 20.05.2012 - 06:48) |
Хочу сделать общий модуль |
Хорошая идея.
При открытии страницы модуль проверяет наличие метки на странице. Есть метка - модуль не стартует. Нет метки - модуль добавляет адрес страницы в сайтмепу и ставит метку.
Но есть подводный камень. Одна и та же страница может быть доступна по разным URL; в сайтмепу могут попасть кривые адреса, при этом встанет метка, и прямой адрес в сайтмепу уже не попадет.
Если же не ставить метку, то сайтмепа будет зарастать дублями кривых адресов. Особенно если в адресную строку попадает идентификатор сессии...
Спустя 51 минута, 29 секунд (20.05.2012 - 15:52) Nikitian написал(а):
Цитата (walerus @ 20.05.2012 - 14:39) |
если ты что то будешь ДОписывать, тут уже придется либо модуль корректировать, либо тот скрипт, под модуль корректировать. |
Не правильно. Модуль сайтмапа нужен для моего движка, соответственно в обозримом будущем им занимаюсь только я. Если потом будет заниматься другой разраб - его проблемы разбираться как всё написано и как новым модулям добавлять поддержку сайтмапа.
Цитата (FatCat @ 20.05.2012 - 15:01) |
При открытии страницы модуль проверяет наличие метки на странице. |
Да, примерно к этому и пришёл.
Всем спасибо, ушёл кодить. Думаю, задача решена )
Всем спасибо, ушёл кодить. Думаю, задача решена )