Получить все «страницы» в YII?

Я пытаюсь создать свою собственную XML-карту сайта. Все сделано за исключением той части, которая, как я думал, будет самой легкой. Как вы получаете список всех страниц на сайте? У меня есть куча просмотров в папке /site и несколько других. Есть ли способ явно запросить их URL или, возможно, через контроллеры?

Я не хочу использовать расширение

8 голосов | спросил coderama 14 Jpm1000000pmMon, 14 Jan 2013 13:37:49 +040013 2013, 13:37:49

3 ответа


0

Вам нужно знать, какой контент вы хотите включить в ваш sitemap.xml, я не думаю, что вы действительно хотите включить ВСЕ страницы в ваш sitemap.xml или действительно хотите включить что-то вроде site.com/статья /редактировать /1?

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

Не думайте с точки зрения контроллеров /действий /представлений, а скорее думайте о ресурсах вашей системы, которые вы хотите проиндексировать, будь то статьи или страницы, все они находятся в вашей базе данных или каким-то образом хранятся, так что вы можете составить список их, и у них есть URI, который идентифицирует их, получение URI - это вопрос вызова нескольких функций.

ответил Asgaroth 14 Jpm1000000pmMon, 14 Jan 2013 19:06:02 +040013 2013, 19:06:02
0

Есть две возможности -

Дело 1:

Вы работаете на статическом веб-сайте, тогда вы можете найти весь свой HTML-файл в 1 папке - protected /views /site /pages http://www.yiiframework.com/вики /22 /как-на-дисплей-статические-страницы-в-Yii /

Дело 2:

Сайт динамический. Такие задачи, как создание и восстановление файлов Sitemap, можно классифицировать на фоновые задачи.

Выполнение фоновых задач может быть достигнуто путем эмуляции браузера, что возможно в linux с использованием команд - WGET , GET или lynx

Или вы можете создать CronController как CConsoleCommand . Как использовать команды в YII показано в ссылке ниже - http://tariffstreet.com/yii/2012/04 /реализации-хрон-работы-с-юй-и-CConsoleCommand /

Sitemap - это XML, в котором перечислены URL вашего сайта. Но это делает больше, чем это. Это помогает вам визуализировать структуру веб-сайта, у вас может быть

  • категория
  • подкатегорий.

При создании полезного расширения вышеизложенные моменты можно учесть до разработки.

Такие фреймворки, как Wordpress , предоставляют способ создания категориальной карты сайта. Таким образом, метаданные для каждой страницы сохраняются до и с использованием этих метаданных, которые он обнаруживает, и группируют страницы.

Решение с помощью Reflection, предложенное @Pavle , является хорошим и должно быть хорошим решением. Учтите, что могут быть частичные просмотры , и вы можете или не хотите перечислять их как отдельные ссылки.

Итак, сколько усилий вы хотите приложить к созданию расширения, зависит от некоторых из них.

Вы можете либо попросить пользователя перечислить все переменные в config fie и перейти оттуда, что неплохо, или вам нужно сгруппировать страницы и составить список, используя некоторые методы, такие как отражение и парсинг страниц и поиск регулярных выражений .

Для ex - Основываясь на именах модулей, вы можете сначала сгруппировать их, и контроллеры внутри модуля могут сформировать подгруппу.

ответил fortm 4 MarpmMon, 04 Mar 2013 18:49:55 +04002013-03-04T18:49:55+04:0006 2013, 18:49:55
0

На основании вашего вопроса: 1. Как вы получаете список всех страниц на сайте?

На основе того, как Yii использует модуль /контроллер /action /action_params и вашу потребность в создании карты сайта для SEO.

  1. Будет трудно разобрать автоматически, чтобы получить все URL, так как ваши параметры действий изменяются бесконечно. Хотя вы можете просто получить контроллер /действие легко, как построено Павле Предич. Сложность возникает, когда вы настроили (SERF) URL-правила, предназначенные для SEO.

Следующее лучшее решение - иметь базу данных содержимого, и вы знаете, как получить каждый контент через правила URL, а затем задание консоли cron для создания всех URL-адресов, которые будут сохранены как sitemap.xml.

Надеюсь, это поможет!

ответил Compleat Guru 8 MaramFri, 08 Mar 2013 11:44:22 +04002013-03-08T11:44:22+04:0011 2013, 11:44:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132