RSS-импорт. Изменяем/корректируем ссылки на изображения
24.07.2025 Автор: Гость

Really Simple Syndication(RSS) – технология распространения информационного контента, которая позволяет не заходя на интересный сайт, получать новости и обновления периодически появляющиеся на сайте, по каналу RSS.
В свою очередь RSS-лента, предоставляет возможности для вебмастеров и владельцев сайтов, настроить ее по своему усмотрению и в зависимости от величины полезности и интересности информации, привлечь подписчиков RSS-ленты, в лице постоянных посетителей и читателей.
RSS помогает очень легко, удобно и оперативно получать информацию с любого сайта/блога где он присутствует. Так что, вам необходимо понять, как пользоваться ей ради вашего удобства и легкости работы.
Если вы разберётесь в этом вопросе использовать RSS станет очень удобно с ним работать.
Многие официальные ленты не показывают картинок, например «Яндекс.Новости», а некоторые, показывают.
Вот здесь и возникают некоторые осложнения, с которыми я вам и помогу, надеюсь, разобраться.
Некоторые сервисы транслируют свои RSS-каналы с картинками имеющих относительные ссылки (относительно корня сайта-источника), и, когда такая лента попадает вам на страничку (RSS- импорт) - вместо изображений мы наблюдаем рамки отсутствующих картинок.
Создать RSS-импорт на сайте в системе юКоз элементарно.
Заходите в ПУ » Главная » RSS импорт, кликаете на клавишу [Создать RSS-транслятор], вставляете в предложенное окно полную ссылку (http://news.yandex.ru/index.rss) на RSS-ленту (поток), выбираете настройки (количество новостей, колонок и пр.), и кликаете [Создать] ....


Все.
Следует упомянуть, что после создания RSS-транслятора у вас система создаёт шаблон, то есть оформление вашей RSS-ленты. Который можно отредактировать на своё усмотрение.
RSS-импорт создан.
Теперь можно его вставлять на любую страницу сайта кодом $RSSIT_4$, где «4» - номер вашего импорта.
Как же бороться с относительными (относительно домена) ссылками в созданных трансляторах?
Как, зачастую бывает - всё достаточно просто.
Во-первых - запаковываем RSS-канал в див с индивидуальным ID - уникальным идентификатором - например:
Код
<div id="rssit_4">$RSSIT_4$</div>
Код
id="rssit_4" - здесь просто имя ID = № канала (коду для вставки, в нижнем регистре).
Просто и элементарно.
Просто и элементарно.
Во-вторых - пишем (копируем и изменяем) небольшой скрипт (JavaScript), который будет «проходится» по всем картинкам данного блока (id='rssit_4') и менять/править «кривые» ссылки на «прямые» - правильные.
Самое важное - узнать, где же лежат изначально картинки.
Для этого необходимо смотреть исходный код канала (или куда ссылается отсутствующая картинка) и знать адрес сайта, с которого импортируется лента.

Например.
У нас есть отсутствующая картинка с вот таким кодом:
Код
<p style="margin-bottom: 0cm;">
<img style="margin: 5px; float: right;" src="/sites/default/files/IMG_3985%20%281%29.jpg" border="0" height="150" width="200" />Как научить детей правилам дорожной безопасности? Только на практике показав им основные нормы поведения на проезжей части. Делать это в условиях города небезопасно, а учиться по книжкам – не всегда понятно и не очень эффективно.</p>
<img style="margin: 5px; float: right;" src="/sites/default/files/IMG_3985%20%281%29.jpg" border="0" height="150" width="200" />Как научить детей правилам дорожной безопасности? Только на практике показав им основные нормы поведения на проезжей части. Делать это в условиях города небезопасно, а учиться по книжкам – не всегда понятно и не очень эффективно.</p>
Код
Красным - отмечена ссылка на отсутствующее изображение. То есть оно существует, но не на вашем домене/хосте, а на родном, откуда импортирована лента (http://86.gibdd.ru).
Понятное дело, что у вас на сайте такой картинки и по этому адресу быть не может, а если и может то вероятность очень мала..... )))
Следовательно - нам, точнее вам, нужно выявить все такие ссылки и переписать адреса с относительных (относительно корня сайта) на абсолютные.
И делается это скриптом.
И, если мы знаем адрес сайта, с которого был произведён импорт, а узнать это можно в ПУ » Главная » RSS импорт - под строкой с именем канала, пишется адрес, откуда он импортируется.

Нам от него нужен только домен - то есть:
Код
ссылка на канал = «http://86.gibdd.ru/taxonomy/term/5/0/feed»
домен = «http://86.gibdd.ru»
домен = «http://86.gibdd.ru»
Пишем скрипт:
Помним, что этот канал должен быть запакован в блок с ID
В результете ... исправляем небольшой «баг»....
Код
<script type="text/javascript">
$(document).ready(function(){
$('#rssit_4 img[src^="/"]').each(function(){
this.src='http://86.gibdd.ru'+$(this).attr('src');
});
});
</script>
$(document).ready(function(){
$('#rssit_4 img[src^="/"]').each(function(){
this.src='http://86.gibdd.ru'+$(this).attr('src');
});
});
</script>
Код
Где:
$(document).ready(function() - Ожидаем когда объектная модель документа (DOM) будет готова к использованию.
$('#rssit_4 img[src^="/"]').each(function() - Находим все картинки в блоке с ID=rssit_4 с атрибутом src начинающиеся со слеша («/») - то есть с относительными ссылками, и проходимся по ним (перебираем).
this.src='http://86.gibdd.ru'+$(this).attr('src'); - Заменяем текущую ссылку на картинку (атрибут src) на тоже самое + домен с которого импортируем канал - 'http://86.gibdd.ru'+$(this).attr('src')...
Здесь, в данном случае домен = http://86.gibdd.ru - у вас же - свой.
$(document).ready(function() - Ожидаем когда объектная модель документа (DOM) будет готова к использованию.
$('#rssit_4 img[src^="/"]').each(function() - Находим все картинки в блоке с ID=rssit_4 с атрибутом src начинающиеся со слеша («/») - то есть с относительными ссылками, и проходимся по ним (перебираем).
this.src='http://86.gibdd.ru'+$(this).attr('src'); - Заменяем текущую ссылку на картинку (атрибут src) на тоже самое + домен с которого импортируем канал - 'http://86.gibdd.ru'+$(this).attr('src')...
Здесь, в данном случае домен = http://86.gibdd.ru - у вас же - свой.


В данном варианте, я предпочитаю прописывать его (скрипт) сразу после блока.
То есть, в сумме, ваш код - импорта и скрипта примерно должен выглядеть вот так:
Код
<div id="rssit_4">$RSSIT_4$</div> /* Ваш канал импорта в блоке с индивидуальным ID */
<script type="text/javascript">
$(document).ready(function(){
$('#rssit_4 img[src^="/"]').each(function(){
this.src='http://86.gibdd.ru'+$(this).attr('src'); /* здесь должен быть ваш домен с которого осуществляется импорт */
});
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$('#rssit_4 img[src^="/"]').each(function(){
this.src='http://86.gibdd.ru'+$(this).attr('src'); /* здесь должен быть ваш домен с которого осуществляется импорт */
});
});
</script>
Данный скрипт работает в ИЕ только с корректным доктайпом, если дойтайп не проставлен, используйте скрипт что ниже.
Код
<script type="text/javascript">
$(document).ready(function(){
$('#rssit_19 img').each(function(){
var a=$(this).attr('src')||false;
if(a&&a.substring(0,1)=='/'){this.src='http://www.tymoshenko.ua'+a;}
});
});
</script>
$(document).ready(function(){
$('#rssit_19 img').each(function(){
var a=$(this).attr('src')||false;
if(a&&a.substring(0,1)=='/'){this.src='http://www.tymoshenko.ua'+a;}
});
});
</script>



Всего комментариев: 0 | |