16.12.2008
Как правильно давать ссылку на RSS в коде
Вот как все задают ссылку на RSS-трансляцию в HTML? Где-то так (пример из главной Яндекса):
<link rel=alternate type=»application/rss+xml» title=»Блог Яндекса» href=»http://company.yandex.ru/blog/index.rss»>
Давайте разберем эту конструкцию согласно стандартов W3C. Мы увидим, что она неправильная.
LINK
Этот элемент определяет ссылку. В отличие от A, он может появляться только в разделе HEAD — «шапке» документа. Хотя LINK не имеет содержимого, он выражает информацию о взаимоотношениях документов.Атрибуты rel и rev дополнительно могут: атрибут rel — определять ссылки вперёд, а атрибут rev — ссылки назад.
rel
Описывает соотношение между текущим документом и якорем, определённым атрибутом href.alternate
Альтернативная версия текущего документа. Вместе с атрибутом lang, он подразумевает переведённую версию документа. Если используется вместе с атрибутом media, подразумевает версию, созданную для другого носителя.(перевод http://pyramidin.narod.ru/html401/ с моими правками)
Так вот, http://company.yandex.ru/blog/index.rss — это НЕ альтернативная версия главной страницы Яндекса. Следовательно, такую конструкцию использовать нельзя. Она уместна только на главной странице блога Яндекса, и там, куда записи блога транслируются, но нигде больше.
Руководствуясь такой логикой, я переделал свой блог на Wordpress таким образом:
<?php if (is_category()) {
$cat = get_category_by_path(get_query_var(‘category_name’),false);
$current = $cat->cat_ID;
$feed = get_category_feed_link($current, »);
} ?><?php if (is_category()) { ?>
<link rel=»alternate» type=»application/rss+xml» title=»RSS 2.0″ href=»<?php echo $feed; ?>» />
<?php } ?><?php if (is_single()||is_page()) { ?>
<link rel=»alternate» type=»application/rss+xml» title=»RSS 2.0″ href=»<?php echo the_permalink().’feed/’; ?>» />
<?php } ?>
Буду поддерживать стандарты :)
Тру-извращенство блин :))
Интересно. Правда код не понял что делает (не силён в программировании)
Александр, что делает код можно понять, походив по сайту и посмотрев, куда ведет ссылка на RSS на каждой странице, а где ее вообще нет :) И сравнить это со стандартным Ворпдрессом.
linche, ага, я такой.
Роман, а если фид пропущен через фидберн. Есть смылс его менять таким образом?
Александр Анатольевич, до сегодняшнего дня у меня был пропущен, было 1200 подписчиков. Но я решил, что правильней будет от него отказаться.
По этому поводу я отдельно сделаю анонс.
Хорошо, тогда ждём.
[...] Соответствие стандартам. [...]
Ммммм… Но ведь теперь РСС с поста показывает не альтернативу посту, а комментарии. Технически, это не совсем альтернатива, не правда ли? Я-то хочу видеть посты в другом виде, т.е. в виде РСС. А полный РСС именно это мне и предлагает. Не так ли?
Денис, комментарии — часть этой страницы. При чем, единственная динамичная. То, что в альтернативной версии все остальное отсекается — это ее право.
Например, если бы на главной странице этого сайта транслировался список из 5 последних записей блога, просто заголовки, то и там можно было бы делать RSS их.
Например, вот здесь:
http://company.yandex.ru/
Можно было бы размещать RSS и новостей, и блога.
Я немного неправильно этот момент в тексте пояснил, исправлю.