Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TYPO3: SEO и статистика посещений (http://forum.typo3.ru/forumdisplay.php?f=35)
-   -   Полноценный Google Sitemap для сайта на TYPO3 (http://forum.typo3.ru/showthread.php?t=9939)

dmartynenko 21.02.2012 15:25

Полноценный Google Sitemap для сайта на TYPO3
 
Пост вызван давно назревшей потребностью сделать sitemap который охватывает большую часть контента сайта, и обновившимся в репозитории экстом dd_googlesitemap от Дмитрий Дулепова. Это экст который "avoids typical errors by other similar extensions".

Но как показывает поверхностное знакомство, он не делает того что мне нужно. Все подобные эксты формируют учитывают записи страниц и некоторые еще записи из tt_news (как dd_googlesitemap). Причем все записи tt_news будут ссылаться на одну страницу (один и тот же single pid).

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

Как подойти к решению это проблемы? Как решаете ее вы?

Сейчас в голове крутятся такой вариант:
1. Сделать в каждом *своем* эксте обработчик для pageType=xxx (http://.../?type=xxx), и по этому значению type выводить вместо обычного контента тот же контент в формате sitemap.xml
2. Для сторонних экстов (тот же tt_news) - сделать аналог с помощью TS.CONTENT.
3. Собрать со всех страниц то, что они ответят на type=xxx в один sitemap или вывести отдельный sitemap для каждой страницы (раздела) - http://www.seomoz.org/blog/multiple-...on-and-traffic

Плюсы - возможность охватить весь контент, ведь даже самый навороченный sitemap-экст не может знать на каких страницах, что и как сконфигурировано, что бы составить полный перечень всех url.
Минусы - сложность решения.

-=UncleByte=- 22.02.2012 09:27

XML sitemap по сути та же страница с ссылками, т.е. гигантским меню всего и вся. Ее вполне можно сделать написав альтернативный TS шаблон для, скажем, typeNum=33333

dmartynenko 22.02.2012 11:49

Да, это и похоже на мою идею. Только одним шаблоном это не решить - шаблон выводит одну страницу, а на сайте может быть пару десятков разделов раскиданных на разных ветках. Под разделом я имею в виду страницу с неким плагином (например tt_news), то есть когда одна "физическая" страница в TYPO3 содержит еще десятки-сотни-тысячи виртуальных страниц (например tt_news single view).

-=UncleByte=- 22.02.2012 12:14

Я приведу пример:
http://www.rzhevrealty.ru/sitemap.xml
выводится вот этим вот шаблоном:
Код:

[globalVar = GP:type > 0]
config.sourceopt.enabled = 0
[end]
sitemap = PAGE
sitemap {
typeNum = 777
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:text/xml
no_cache = 1
xhtml_cleaning = 0
admPanel = 0
absRefPrefix = http://www.rzhevrealty.ru/
}
### start_tags
10 = TEXT
10.value = <?xml version="1.0" encoding="UTF-8"?>
10.postCObject = TEXT
10.postCObject.char = 10
20 = TEXT
20.value = <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
20.postCObject = TEXT
20.postCObject.char = 10
### main_page
30 = COA
30 {
wrap = <url>|</url>
1 = TEXT
1.typolink.parameter.data = leveluid:0
1.typolink.returnLast = url
1.wrap = <loc>|</loc>
2 = TEXT
2.data = field:tstamp
2.date = c
2.wrap = <lastmod>|</lastmod>
}
### main_menu
40 = HMENU
40 {
wrap = |
entryLevel = 0
1 = TMENU
1 {
expAll = 1
NO {
doNotShowLink = 1
allStdWrap.cObject = COA
allStdWrap.cObject.wrap = <url>|</url>
allStdWrap.cObject.10 = TEXT
allStdWrap.cObject.10.typolink.parameter.field = uid
allStdWrap.cObject.10.typolink.returnLast = url
allStdWrap.cObject.10.wrap = <loc>|</loc>
allStdWrap.cObject.20 = TEXT
allStdWrap.cObject.20.field = tstamp
allStdWrap.cObject.20.date = c
allStdWrap.cObject.20.wrap = <lastmod>|</lastmod>
}
}
}
### side_menu
50 < .40
50.special = directory
50.special.value = 9
### show_realty_objects
60 = CONTENT
60 {
table = tx_estateagent_estate
select {
selectFields = uid, pid, tstamp, name
pidInList = this
orderBy = pid
recursive = 100
andWhere = NOT deleted
}
renderObj = COA
renderObj {
wrap = <url>|</url>
1 = TEXT
1.typolink.parameter.field = pid
1.typolink.additionalParams = &tx_estateagent_pi1[showUid]={field:uid}
1.typolink.additionalParams.stdWrap.insertData = 1
1.typolink.returnLast = url
1.insertData = 1
1.wrap = <loc>|</loc>
2 = TEXT
2.field = tstamp
2.date = c
2.wrap = <lastmod>|</lastmod>
}
}
### end_tags
70 = TEXT
70.value = </urlset>
}

Соответственно обычные страницы + страницы генерящиеся плагином каталога объектов недвижимости.

dmartynenko 22.02.2012 12:45

Да, простой и полезный код.

Но на сколько я понимаю у вас записи для tx_estateagent_pi1 хранятся на тех же страницах на которых выводятся. Это упрощает решение.

Но в моем случае такая реализация будет затруднительна. Например, записи "компании" хранятся в нескольких SysFolder, и выводятся на нескольких разных страницах в зависимости от SysFolder и категории. Откуда выводить компании (SysFolder) и каких категорий задается в FlexForm плагина на странице. Получается всю такую конфигурацию для всего сайта нужно продублировать в шаблоне для typeNum = 777. Получится очень длинный шаблон с большим количеством кода, и следовательно легко что-то забыть там добавить, забыть вносить изменения сделанные в конфигурации разделов.

Теперь думаю сделать так как вы написали, но для каждого раздела (некоторые страницы) сделать свою конфигурацию для sitemap, так проще ее поддерживать актуальной.

И потом написать что-то вроде crawler-a, который:
1. будет проходить по всем страницам, запрашивать их с typeNum = 777
2. если получит в ответ валидный xml (это sitemap.xml для этого раздела), то добавит в общий sitemap index файл (
http://www.sitemaps.org/protocol.html#index)
3. ну и конечно sitemap обычных страниц тоже в sitemap index включит.

-=UncleByte=- 22.02.2012 13:14

Я когда продумывал как это сделать как раз прислушался к совету Валерия размещать все записи непосредственно на страницах, так их действительно проще вынимать для sitemap.
А по поводу длины шаблонов - тут не нужно боятся, надо просто комментировать для себя и заодно где возможно использовать саму базу и бэкенд, т.е. какие-то данные вводить в скрытый контент в бэкенде и т.п.

Андрей Аксенов 23.02.2012 00:24

понятно, что на TS можно написать что угодно, но ДЛЯ СОЗДАННОГО ТОБОЮ САЙТА, то есть это решение не охватывает сути...
Ну а по делу... это как RealURL - если кто для него пишет решения - то велком, а нет, так придумывайте - не обяжешь...
Или решения есть, вроде привязывания меток к страницам, контенту, кешируемому содержимому и т.п.?
По сути: расшифруйте, что нужно от этой карты сайта? Отметить страницы и содержимое (в том числе виртуальные, типа новостей) и далее???

dmartynenko 23.02.2012 11:43

Цитата:

расшифруйте, что нужно от этой карты сайта?
Все просто:
1. что бы поисковики быстрей индексировали новый контент.
2. и желательно не переиндексировали старый.

Alex Podusov 16.04.2012 18:55

А если как раз использовать кэш realurl?

Dmitry Dulepov 16.05.2012 19:22

Цитата:

Сообщение от Alex Podusov (Сообщение 33581)
А если как раз использовать кэш realurl?

Не стоит. Во-первых, он очищаться может. Во-вторых, это внутренняя штука realurl, которая может кардинально измениться в любой момент.

dmartynenko 17.05.2012 12:15

Ну и уж точно кэш RealURL не содержит даты последнего изменения содержания страницы, которая также важна для sitemap. Там кажется есть только дата генерации URL, а это не то же самое.

Alex Podusov 17.05.2012 13:06

Ну нет конечно. однако я думаю скрипт получится не такой сложный, если брать таблицы cashe_pages, pages, tx_realurl_urldecodecache, tx_realurl_patchcache - то объединяя эти данные вполне можно построить sitemap.xml - тут естественно в sitemap попадут только страницы, которые хоть раз просматривались...

dmartynenko 17.05.2012 13:21

Вот как раз с pages нет никаких проблем построить sitemap. Речь изначально шла о том, что на одной странице (из pages) может стоять плагин как USER_INT - значит caсhe_** не помогут. Это может быть тот же tt_news, который выводит 10 000 новостей - фактически "виртуальных" страниц о которых ни ядро, ни кэши ничего не знают (или еще не знают). Ведь что бы получить URL страницы конкретной записи нужно знать конфигурацию плагина (из TS), то как он формируется ссылки на "подробнее" (PHP код плагина) и добавить к этому конфигурацию RealURL.

Например, я хочу что бы добавленная на сайт новость сначала появилась в sitemap, и только потом с некоторой задержкой стала доступна в списке новостей в FE. Зачем думаю понятно - что бы контент не успели своровать раньше, чем поисковики проиндексируют новую страницу.

PS: В общем задача в таком виде и обсуждалась сначала ветки.

Alex Podusov 17.05.2012 13:40

Я о том тоже и говорю, что построить sitemap возможно лишь когда страница была открыта и посещена. Кстати, второй вариант - программка-обходчик страниц сайта по внутренним ссылкам на них с построением карты.
А вопрос авторства сейчас неплохо решается соответствующими сервисами в том же Яндекс.Вебмастере. На гугле такое по моему то же есть.

dmartynenko 17.05.2012 14:09

Цитата:

Сообщение от Alex Podusov (Сообщение 33815)
программка-обходчик страниц сайта по внутренним ссылкам

Из реальной жизни - изменения, добавления делаются порядка в 2000 записей сайта ежедневно (разных, не только новостей). Всего сайт содержит порядка 40-50 тыс. страниц. Так что этот вариант отпадает - проблематично даже раз в сутки просканить сайт, а хочется иметь карту "в реальном времени" или хотя бы с обновлением в 5-15 минут.

Цитата:

Сообщение от Alex Podusov (Сообщение 33815)
А вопрос авторства сейчас неплохо решается соответствующими сервисами в том же Яндекс.Вебмастере. На гугле такое по моему то же есть.

На Яндексе можно подтвердить уникальность текста от 2000 знаков в ручном режиме. А мы, например, оперируем базой объявлений недвижимости и компаний.
Ручной режим не подходит. Вид информации не подходит под требования Яндекса об уникальности и его нельзя подтвердить. Информацию по объявлениям очень многие тырят. Поисковиков много и у каждого свой способ подтвердить уникальность, или вообще нет такого способа.
Sitemap же универсален, его все понимают.

Alex Podusov 17.05.2012 14:22

Да-да-да. Всё упирается в объемы. Теперь вижу по количеству страниц и обновлений.
Тогда надо просекать логику работы используемых экстов, прописанные в конкретном данном случае правила формирования адресов realurl. Скорее всего какого-то общего, подходящего для всех решения (куда бы ни установил - работает) - не получится. Всегда надо будет допиливать под конкретные условия.

dmartynenko 17.05.2012 14:30

Да, для небольшого редко обновляемого сайта проблем с картой сайта нет.
В таком случае можно организовать все данные в удобном виде для генерации sitemap и обойтись одним TS конфигом, который приведен в этой ветке выше уважаемым -=UncleByte=-.

Андрей Аксенов 17.05.2012 16:24

Да уж, одного, универсального решения тут быть не может. Ведь создатели расширений - кто в лес, кто по дрова, как хотя, так и пишут. Знали бы вы, что твориться в мультишоп, я вот до сих пор логику работы до конца не понял...
Кроме того, сайтмап - это уже поисковая оптимизация, за работу над которой нужно брать отдельную плату... Конечно хотелось бы без проблем и все в одном флаконе, да вот нет.

Alex Podusov 17.05.2012 17:29

Вот сейчас тоже копал, накопал экст Дмитрия Дулепова dd_googlesitemap http://typo3.org/extensions/reposito..._googlesitemap корректно работающий с tt_news. Буду пробовать. Может быть в вашем случае пригодится его логика?

dmartynenko 18.05.2012 13:38

Вернулись к исходному посту темы, который как раз начался с dd_googlesitemap :)

Alex Podusov 18.05.2012 14:02

Цитата:

Сообщение от dmartynenko (Сообщение 33827)
Вернулись к исходному посту темы, который как раз начался с dd_googlesitemap :)

Да, прошу прощения, как-то к настоящему моменту уже и подзабылось, о чем собственно речь :)
По поводу этого экста. На самом деле - не один singlepid. Просто для каждого singlpid'a строится отдельный sitemap. и гугл и яндекс, как я помню, прекрасно понимают несколько сайтмапов - тут ничего страшного нет

dmartynenko 18.05.2012 14:04

Да, я тоже уже понял что одним sitemap не обойтись. Как и одним экстеншеном для его генерации.

Андрей Аксенов 27.05.2012 10:17

А как насчет этого расширения: tq_seo?
Никто не пробовал?

dmartynenko 28.05.2012 14:16

По описанию функций много. Но USER_INT эксты отпадают:
Цитата:

The sitemap will index ALL cacheable pages with full extension support (like tt_news and all other “clean” extensions).
If your extension doesn't use cHash or use no_cache the outwill WILL NOT included in the sitemap (and also will not be indexed by index_search).

Also the sitemap indexes all generated “typolink” (BETA).

Warning:
The TQ Seo Sitemap relies on the TYPO3 caching system. If any extension (or configuration – eg. RealURL configuration) break the caching system and makes TSFE non-cacheable (TSFE->no_cache) the sites will NOT INDEXED!
Make sure no extension will set no_cache and the cHash of your link is valid. This is the only way to get only valid URLs into your sitemap.

Alex Podusov 08.06.2012 17:31

а вот этот экст? crawler?

dmartynenko 08.06.2012 17:58

Вы опять не читаете ветку :)

http://forum.typo3.biz/showpost.php?...6&postcount=15


Часовой пояс GMT +4, время: 14:23.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot