Sitemap

Если у вас есть модуль, которым вы хотите поделиться - пишите в этот раздел

Модератор: core team

Timurio
Новенький
Сообщения: 8
Зарегистрирован: Сб июн 21, 2014 2:44 pm
Откуда: Shenzhen, China
Контактная информация:

Сообщение Timurio » Ср июн 25, 2014 12:01 am

Всем доброго времени суток!

Адаптировал для Yupe! Sitemap, написанный для Yii:
http://www.elisdn.ru/blog/38/sitemap-for-yii-project

Ссылка на GitHub:
https://github.com/tmrgdv/tmrgdv/tree/master/sitemap

Результат работы модуля:
https://www.easy-tickets.ru/sitemap.xml

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

Аватара пользователя
BrusSENS
Гуру
Сообщения: 146
Зарегистрирован: Сб сен 15, 2012 2:15 am
Откуда: Новороссийск
Контактная информация:

Сообщение BrusSENS » Ср июн 25, 2014 12:34 am

Timurio писал(а):Всем доброго времени суток!

Адаптировал для Yupe! Sitemap, написанный для Yii:
http://www.elisdn.ru/blog/38/sitemap-for-yii-project

Ссылка на GitHub:
https://github.com/tmrgdv/tmrgdv/tree/master/sitemap

Результат работы модуля:
https://www.easy-tickets.ru/sitemap.xml

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


Эммм.... А разве в sitemap.xml не должно быть xml структуры?

Timurio
Новенький
Сообщения: 8
Зарегистрирован: Сб июн 21, 2014 2:44 pm
Откуда: Shenzhen, China
Контактная информация:

Сообщение Timurio » Ср июн 25, 2014 12:39 am

BrusSENS писал(а):
Эммм.... А разве в sitemap.xml не должно быть xml структуры?


Вы ссылку, наверное, в Chrome открыли? Нужно или код страницы смотреть, или просто в IE открыть, он xml лучше отображает.

Аватара пользователя
BrusSENS
Гуру
Сообщения: 146
Зарегистрирован: Сб сен 15, 2012 2:15 am
Откуда: Новороссийск
Контактная информация:

Сообщение BrusSENS » Ср июн 25, 2014 10:10 pm

Хм :) И правда есть код :) Приношу свои извинения :)

Аватара пользователя
xoma
Администратор
Сообщения: 1899
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Ср июн 25, 2014 11:34 pm

Спасибо за модуль! Можете написать про него заметку на http://yupe.ru/ ?
http://yupe.ru/subscribe - интересное от команды "Юпи!"

Timurio
Новенький
Сообщения: 8
Зарегистрирован: Сб июн 21, 2014 2:44 pm
Откуда: Shenzhen, China
Контактная информация:

Сообщение Timurio » Чт июн 26, 2014 12:57 pm

xoma писал(а):Спасибо за модуль! Можете написать про него заметку на http://yupe.ru/ ?

Я, как будет немного времени, доделаю хотя бы простейший BackEnd к модулю, чтобы можно было выбирать в настройках данные каких именно моделей выгружались в sitemap и тогда все это дело опишу.

Аватара пользователя
xoma
Администратор
Сообщения: 1899
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Сб июн 28, 2014 10:22 pm

Отлично!
http://yupe.ru/subscribe - интересное от команды "Юпи!"

UnQuaiz
Участник
Сообщения: 11
Зарегистрирован: Ср июл 09, 2014 1:01 pm

Сообщение UnQuaiz » Ср июл 09, 2014 1:04 pm

Заслал пулреквест на гитхабе.

Сделал небольшие правки в модуле.
Пофиксил кодировку с win1251 на utf-8
Добавил правильный content-type чтобы xml воспринимался клиентами правильно
Добавил зависимости для модуля, и необходимые импорты

Timurio
Новенький
Сообщения: 8
Зарегистрирован: Сб июн 21, 2014 2:44 pm
Откуда: Shenzhen, China
Контактная информация:

Сообщение Timurio » Чт июл 10, 2014 10:33 am

UnQuaiz писал(а):Заслал пулреквест на гитхабе.

Сделал небольшие правки в модуле.
Пофиксил кодировку с win1251 на utf-8
Добавил правильный content-type чтобы xml воспринимался клиентами правильно
Добавил зависимости для модуля, и необходимые импорты


Спасибо! Сегодня все это дело обновлю.

Аватара пользователя
Dark_Cs
core team
Сообщения: 121
Зарегистрирован: Пт окт 25, 2013 2:34 pm

Сообщение Dark_Cs » Чт июл 10, 2014 4:36 pm

UnQuaiz писал(а):Добавил зависимости для модуля, и необходимые импорты

зачем для подобного модуля зависимости? Сайтмапу нужно просто знать какие страницы формирует какой-то модуль, и тут, вероятней всего, есть два пути:
1. Добавить в каждый модуль метод, который будет возвращать список страниц для сайтмапа (но тогда, в перспективе, если захочется настраивать вывод эти ссылок, типа, только определенные категории каталога, придется реализовывать еще и интерфейс какой-то над этим в каждом модуле, или что-то вроде этого)
2. Просто в сайтмапе предусмотреть различные модули и работать напрямую с моделями.

Поэтому для простоты я делал по второму варианту, описывая настройки модулей в конфиге: https://github.com/DarkCs/yupe/blob/develop/protected/modules/sitemap/config/modules.php

Там много чего не хватает, например, настройки параметров поиска модели (фильтр просто через ->published()), но может пригодится.

Аватара пользователя
xoma
Администратор
Сообщения: 1899
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт июл 10, 2014 4:43 pm

Может собрать вместе два этих модуля, подумать как поступить лучше и красивее и сделать модулек, который включим в поставку по умолчанию ?
http://yupe.ru/subscribe - интересное от команды "Юпи!"

Аватара пользователя
Dark_Cs
core team
Сообщения: 121
Зарегистрирован: Пт окт 25, 2013 2:34 pm

Сообщение Dark_Cs » Чт июл 10, 2014 5:08 pm

В принципе, у меня тоже самое, что и у Timurio, + кеширование (не учитывает добавленных данных, просто в качестве защитной меры), получение данных порциями(на 1000+ записей CActiveRecord::model($class)->published()->findAll() упрется либо в лимит памяти).
Тут лучше продумать алгоритм, по которому остальные модули будут общаться с модулем sitemap, предоставлять интерфейс для настройки себя и прочее. Ну или учитывать особенности всех модулей в нем.
Последний раз редактировалось Dark_Cs Чт июл 10, 2014 5:10 pm, всего редактировалось 1 раз.

Аватара пользователя
xoma
Администратор
Сообщения: 1899
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Чт июл 10, 2014 5:21 pm

Dark_Cs писал(а):В принципе, у меня тоже самое, что и у Timurio, + кеширование (не учитывает добавленных данных, просто в качестве защитной меры), получение данных порциями(на 1000+ записей CActiveRecord::model($class)->published()->findAll() упрется либо в лимит памяти).
Тут лучше продумать алгоритм, по которому остальные модули будут общаться с модулем sitemap, предоставлять интерфейс для настройки себя и прочее. Ну или учитывать особенности всех модулей в нем.



Угу, я думаю, что было бы отлично указывать какие модельки выгружать в sitemap можно было из админки, например, введя строку типа: News, Post, Page и т.д. В свою очередь каждая модель может имплементить интерфейс (по аналогии с модулем comment). Пока такие мысли.
http://yupe.ru/subscribe - интересное от команды "Юпи!"

Timurio
Новенький
Сообщения: 8
Зарегистрирован: Сб июн 21, 2014 2:44 pm
Откуда: Shenzhen, China
Контактная информация:

Сообщение Timurio » Чт июл 10, 2014 7:45 pm

Dark_Cs писал(а):В принципе, у меня тоже самое, что и у Timurio, + кеширование (не учитывает добавленных данных, просто в качестве защитной меры), получение данных порциями(на 1000+ записей CActiveRecord::model($class)->published()->findAll() упрется либо в лимит памяти).
Тут лучше продумать алгоритм, по которому остальные модули будут общаться с модулем sitemap, предоставлять интерфейс для настройки себя и прочее. Ну или учитывать особенности всех модулей в нем.

Да, насчет получения данных порциями, я не учел момент.

xoma писал(а):Угу, я думаю, что было бы отлично указывать какие модельки выгружать в sitemap можно было из админки, например, введя строку типа: News, Post, Page и т.д.

Имхо правильно! В yupe не так много моделей, инфу из которых нужно выгружать в Sitemap, думаю что писать универсальный инструмент - лишний геморрой. Достаточно ограничиться News, Post, Page, ну и для Каталога Товаров дописать выгрузку.
А при появлении новых больших модулей, из которых будет необходима выгрузка, можно просто обновлять модуль Sitemap, благо там это 5 строчек займет, не больше.

UnQuaiz
Участник
Сообщения: 11
Зарегистрирован: Ср июл 09, 2014 1:01 pm

Сообщение UnQuaiz » Пт июл 11, 2014 3:59 am

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

Для того чтобы делать в модулях метод по которому сайтмап будет обращаться - надо сначала модуль sitemap сделать системным. Потому что по хорошему метод должен расти из WebModule с базовым методом, и уже потом в наследнике перекрываться своим методом.

Пока что это сторонний модуль. Переделывать базовый класс WebModule для стороннего модуля - имхо не логично.

Я сам тоже писал sitemap для сайта. Но столкнулся с другой, системной проблемой. Sitemap должен строиться не только по моделям нужным, но ещё и по меню и/или по методам контроллеров модулей.
Здесь сразу все не покроешь одним методом. Интерфейсом может быть. Но опять же - чтобы делать интерфейс к модулям надо чтобы sitemap был родным для yupe :)

Удачнее на мой взгляд было бы использовать какой нибудь аналог rules в urlManager для этого модуля, в котором бы прописывалось какие данные откуда дергать и что с ними делать - т.е. правила.

Ну и лимиты тоже нужны конечно же
Последний раз редактировалось UnQuaiz Пт июл 11, 2014 4:01 am, всего редактировалось 1 раз.


Вернуться в «Дополнительные модули»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость