расставляй правильно приоритеты и не отвлекайся на мелочи

Штатные ошибки совершаемые на блоггере или как правильно вставить кнопки сервиса закладок

Если Вы пользуетесь сервисом Google Blogger (blogspot), на движке которого работает и этот блог, и вручную правите шаблоны к нему, то однозначно, при сохранении шаблона, Вы попадались на его типовые ошибки, к примеру, такие как эта:

Не удалось проанализировать ваш шаблон, так как он неправильно сформирован. Убедитесь, что все элементы XML правильно закрыты. Сообщение об ошибке в XML: The reference to entity «title» must end with the ‘;’ delimiter.

или эта:

Your template could not be parsed as it is not well-formed. Please make sure all XML elements are closed properly.

XML error message: The reference to entity «title» must end with the ‘;’ delimiter.

Это штатные «грабли» от которых Вас пробует отучить XHTML формат и который пытается поддерживать движок Google Blogger. Почему пытается? Да потому, что я еще не видел ни одного валидного XHTML 1.0 Transitional шаблона в этом движке, видимо создатели blogspot’а не очень этим озабочены, т.к. мало того, что Вы можете их сами натворить при постинге статьи, дык ими еще спокойно изобилуют сами виджеты от Google Blogger’а.

Наверняка Вас бесило то, что при попытке вставить какой-либо, на первый взгляд безобидный, внешний код в ответ Вам выскакивало красное предупреждение об ошибке. Как пример я могу взять код с сервисов закладок, которые не очень-то пекутся о том, что-бы предложить Вам пример вставляемого кода для XHTML документов.

Ну да ладно, о чем это я, все решаемо и исправляемо, хотя бы в какой-то степени. Основное внимание в таких ситуациях я уделяю всего двум следующим моментам:

1. Внимательно слежу за закрытием тэгов и их регистром
Все тэги должны закрываться; вместо <br> должно быть <br />, вместо <img src=»…»> пишем <img src=»…» /> и т.д.
Парные тэги должны быть в одном регистре: <div>….</DIV> — недопустимо

2. Помню о том, что в XHTML символы: & < > имеют свое иное предназначение и должны заменяться на символьные объекты &amp; &lt; &gt; (Кстати, думаю насчет символов больше — меньше тема вообще популярная, когда люди кричат: «Я скрипт вставляю, а он не работает» и не поймут в чем здесь дело.)

Кроме этого, все подводные камни можно обнаружить внимательно изучив спецификацию XHTML, а в особенности раздел касающийся различий с HTML 4 (есть и русский перевод), но мне вполне хватает и вышеназванных пунктов.

Еще один нехороший момент, кроме того, что мне не предлагают для вставки XHTML формат, то, что для «универсальности» выдается код содержащий в себе Java Script и никаких вариантов, хотя во многих моментах он там вовсе и не нужен. Понимаю, что доля пользователей с отключенным Java Script во времена повального увлечения Ajax (читай web2.0), просто ничтожна, но в голове всегда вопрос: «А если Java Script недоступен? А нафига он здесь нужен?».

Вобщем: сервер должен работать, а клиент созерцать. Следуя этой логике, я стараюсь все упрощать и перекладывать на плечи сервера. Если взять за пример все те-же сервисы закладок, то переработанный код вставки для движка blogspot, который размещается в нижней части каждой моей статьи будет выглядеть вот так:


<!— bobrdobr.ru —>
<a expr:href=’"http://bobrdobr.ru/addext.html?url=" + data:post.url + "&amp;title=" + data:post.title’ title="Забобрить эту страницу!" target="_blank"><img src="http://static.bobrdobr.ru/images/buttons/bobr_sml_blu_3.gif" alt="Забобрить эту страницу!" width="16" height="16" style="border:none;" /></a>

<!— www.mister-wong.ru —>
<a expr:href=’"http://www.mister-wong.ru/index.php?action=addurl&amp;bm_url=" + data:post.url + "&amp;bm_description=" + data:post.title’ title="Добавить страницу к Mister Wong" target="_blank"><img src="http://www.mister-wong.ru/img/ru/buttons/wong18.gif" alt="Добавить страницу к Mister Wong" style="border:none;" /></a>

<!— del.icio.us —>
<a expr:href=’"http://del.icio.us/post?url=" + data:post.url + "&amp;title=" + data:post.title’ title="del.icio.us" target="_blank"><img src="http://del.icio.us/favicon.ico" alt="del.icio.us" style="border:none;" /></a>

<!— memori.ru —>
<a expr:href=’"http://memori.ru/link/?sm=1&amp;u_data[url]=" + data:post.url + "&amp;u_data[name]=" + data:post.title’ title="Запомнить эту страницу!" target="_blank"><img src="http://memori.ru/img/site/memori.gif" width="16" height="16" title=’Запомнить эту страницу!’ style="border:none;" /></a>

<!— www.google.com —>
<a expr:href=’"http://www.google.com/bookmarks/mark?op=add&amp;bkmk=" + data:post.url + "&amp;title=" + data:post.title’ title="Google" target="_blank"><img src="http://www.google.ru/favicon.ico" alt="Google Bookmarks" title="Google Bookmarks" style="border:none;" /></a>

<!— rumarkz.ru —>
<a expr:href=’"http://rumarkz.ru/bookmarks/?action=add&amp;popup=1&amp;address=" + data:post.url + "&amp;title=" + data:post.title’ target="_blank"><img src="http://rumarkz.ru/favicon.ico" alt="RUmarkz" title="RUmarkz" style="border:none;" /></a>

<!— moemesto.ru —>
<a expr:href=’"http://moemesto.ru/post.php?url=" + data:post.url + "&amp;title=" + data:post.title’ target="_blank"><img src="http://moemesto.ru/icons/mm_icon.gif" width="16" height="16" alt="МоёМесто.ru" title="МоёМесто.ru" style="border:none;" /></a>

<!— www.rucity.com —>
<a expr:href=’"http://www.rucity.com/bookmarks.php?action=add&amp;address=" + data:post.url + "&amp;title=" + data:post.title’ target="_blank"><img src="http://www.rucity.com/icon.png" width="16" height="16" alt="rucity.com" title="rucity.com" style="border:none;" /></a>

Вы можете спокойно использовать блок этого кода в Ваших шаблонах от Blogger’а и он пригодится для подручности постинга закладок Ваших пользователей в любимые рузоновские сервисы.

3 комментария на статью:
  1. Михаил:

    Привет, я никак не могу вставить кнопку Лайн Facebook…

    Фейсбук мне дает код который я должен вставить в Боди:

    (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = «//connect.facebook.net/ru_RU/sdk.js#xfbml=1&version=v2.0»;
    fjs.parentNode.insertBefore(js, fjs);
    }(document, ‘script’, ‘facebook-jssdk’));

    Я вставляю а он мне пишет:

    Ошибка при синтаксическом анализе XML (строка 1963, столбец 69): The reference to entity «version» must end with the ‘;’ delimiter.

    Виновата говорит вот эта строка:

    js.src = «//connect.facebook.net/ru_RU/sdk.js#xfbml=1&version=v2.0»;

    Что с ней не так?

    Спасибо.

  2. Sanator:

    Заміни проблемну стрічку на наступну.

    js.src = «//connect.facebook.net/fr_UA/sdk.js#xfbml=1&version=v2.4»;

    Удачі!

Ответить
Обязательные поля помечены *