Просто сводить мои cms и пытаться упростить некоторые обычные задачи, такие как поиск. CMS имеет много разных модулей, каждый из которых может быть замаскирован динамическими маршрутами.
Вся система довольно прочная и действительно гибкая, но именно здесь страницы результатов поиска вызывают головную боль.
Чтобы сохранить гибкость, я добавляю базовые данные в свой класс поиска, например:
$search->addTable('content', array('title', 'excerpt', 'body', 'meta_keywords', 'meta_description'));
$search->addTable('event', array('title', 'description', 'tags'));
Затем, мой класс поиска генерирует один sql-запрос из этих переменных, который найдет результаты красиво (э-э, может быть, "красиво" сейчас не лучшее слово, потому что набор результатов содержит строки из разных таблиц, поэтому я не могу сказать, какая строка принадлежит какой таблице, потому что все результаты находятся в одном массиве)
Проблема в том, что когда я хочу отобразить страницу результатов, мне нужно позаботиться о создании соответствующих URL для каждого результата, что очень сложно из-за гибкости системы, о которой я упоминал выше (любой контент / модуль может быть замаскирован чем угодно).
Я понимаю, что мой вопрос очень локализован и, возможно, слишком неопределен, чтобы ответить на него в его нынешнем виде, поэтому я попытаюсь немного прояснить свои проблемы. Я не спрашиваю вас о передовых методах или простом ответе на мою проблему, но я был бы очень благодарен, если бы вы могли дать мне несколько хороших советов по этим фундаментальным вопросам:
- Похоже, создание одного запроса - не лучший подход, потому что я не могу сказать, какая строка принадлежит какой таблице (разные таблицы могут означать разные методы создания URL). Другой подход заключается в том, чтобы запрашивать каждую таблицу отдельно и сохранять результаты в многомерном массиве (имя таблицы для ключа). AFAIK запрос sql в цикле foreach не является приемлемым методом. Можно ли пометить каждую строку результата, чтобы она отображала имя таблицы в одном запросе?
- Повредит ли моему SEO, если я не создам реальные (замаскированные, маршрутизированные) URL-адреса для этих результатов, но я показываю очень простые, например (example.com/content/nice-url-slug). Google может наказать мои сайты из-за дубликатов - что мне не подходит.
Как всегда, пожалуйста, спросите, вместо того, чтобы нажимать кнопку закрытия, может быть, я смогу прояснить сценарий немного больше. Спасибо, Фабрик.