Archive for January, 2008

Фото эксперименты

January 22, 08 by TracKer

Вот результаты моих первых экспериментов в панорамной фотографии. :) Все в относительно большом разрешении. Залил на Panoramio, потому что в Flickr не нашел как просмотреть оригинальную картинку. К тому же в Panoramio есть возможность когда-нибудь увидеть результаты в Google Earth :) Каждый файл в оригинале в JPEG занимал порядка 25-30 МБ, перед закачкой пришлось уменьшать до 5МБ, но на качестве вроде бы сильно не отразилось :) Размеры привожу не для оценки качества, так как фото не по размерам оценивается, а просто так :)

Как избавиться от внешних ссылок в WordPress

January 20, 08 by TracKer

Спросил меня недавно NOMAD “Как избавиться от ВС в комментариях”, решил поделиться опытом, как это сделать в WordPress.

Первое что важно запомнить, это то что ссылки на комментаторов нельзя ни в коем случае удалять, это признак плохого тона автора блога. Удаляя ссылку вы разрушаете связь с комментатором. Вместо этого ссылку можно немного модифицировать, отправив ее, например, через скрипт переадресации. Таким образом Внешний Адрес будет находится как-бы в вашем домене, и как Внешняя Ссылка учитываться не будет.

О том как сделать скрипт переадресации я писал в этом посте: Убираем внешние ссылки. Сделать нужно все что написано в посте, вплоть до запрета его индексации в robots.txt.

Как только скрипт готов идем в папку с темплейтом вашего блога, к примеру “/wp-content/themes/default/” находим файл “functions.php” и редактируем его.

Перед тем как перейти непосредственно к редактированию, разберем основные источники ВС в блоге на WordPress и методы борьбы с ними.

И так первый источник ВС это ссылки на автора темы. Обычно они расположен в футере (footer.php), но бывают и исключения, поэтому первым делом следует прошерстить темплейт на их наличие. Бороться с ними не сложно. Такие ссылки можно просто взять в “<noindex>“, примерно так:

<noindex>Powered by <a href="http://wordpress.org/">WordPress</a></noindex>

Все что попадает в “<noindex>” не будет учитываться роботом Яндекса, поэтому с этим тегом нужно быть по осторожнее.

Со статическими ВС разобрались, теперь приступим к динамическим. Осталось несколько мест где могут появляться ВС, это: посты (содержание постов), комментарии и sidebar (их может быть несколько и называться они могут по разному, но это сути не меняет). Теперь перейдем непосредственно к редактированию “functions.php” о котором я писал выше.

Начнем с Постов. Чтобы избавиться от ВС в содержании поста необходимо поставить фильтр на “the_content”. Система фильтров в WordPress очень хорошо развита и позволяет фильтровать практически все что угодно. Итак ставим фильтр:

add_filter('the_content', 'removeLinks');

Вторым параметром к add_filter мы указываем функци, которая и будет фильтровать текст. Собственно код функции:

function preg_callback2($matches) {
  $url = explode(':', $matches[2]);
  if (($url[0] == 'http') || ($url[0] == 'https')) {
    $need = "http://tracker2k.kiev.ua";
    $replace = "http://tracker2k.kiev.ua/redirect.php?";
    if (substr($matches[2], 0, strlen($need)) != $need) {
      $matches[2] = $replace.$matches[2];
    }
  }
  return $matches[1].$matches[2].$matches[3];
} 
 
function removeLinks($content) {
  if (! is_feed()) {
    $content = preg_replace_callback('@(]*href=")([^>\"]*)("[^>]*>)@i', "preg_callback2", $content);
    $content = preg_replace_callback('@(]*href=\')([^>\"]*)(\'[^>]*>)@i', "preg_callback2", $content);
  }
  return $content;
}

Для замены ссылок я использовал регулярные выражения, поэтому добавилась еще одна функция обратного вызова. Чтобы адаптировать под себя вам следует заменить всего два параметра в функции preg_callback2, а именно $need и $replace. В $need следует указать полный адрес вашего сайта без слеша в конце, а в $replace путь в redirect.php со знаком вопроса (“?“) в конце. В принципе с постами мы закончили.

Теперь перейдем к комментариям. С ними, в принципе, дела обстоят точно также. Следует отфильтровать всего три – четыре параметра, с использованием описанной выше функции. Другими словами к написанному выше следует дописать:

add_filter('comment_text', 'removeLinks');
add_filter('get_comment_author_link', 'removeLinks');
add_filter('get_comment_author_url_link', 'removeLinks');
add_filter('comment_url', 'removeLinks');

Идем дальше. Следующим пунктом идет sidebar. С ним сложнее всего. С сайдбаре может быть множество виджетов генерируемых другими плагинами, которые в свою очередь генерируют ВС. Однако весь сайдбар ставить в <noindex> было бы ошибкой, так как можно лишится индексации многих страниц и разделов. Я расскажу о тех Виджетах с которыми работал.

Проше всего бороться с ВС у виджета Text, в нем у меня лежали каунтеры, кнопки и пр. Тут всеголишь следует добавить в начало и конец кода в Виджете “<noindex>” и “</noindex>” соответственно. Далее виджет Links, он используется для генерации Blogroll. Тут необходимо установить еще один фильтр и написать еще одну функцию:

function removeLinks_Blogroll($p1) {
  foreach ($p1 as $obj) {
    $obj->link_url = "http://tracker2k.kiev.ua/redirect.php?" . $obj->link_url;
  }
  return $p1;
} 
 
add_filter('get_bookmarks', 'removeLinks_Blogroll');

Подразумевается, что в Blogroll все ссылки Внешние, поэтому их проверка не производится. Чтобы адаптировать под себя, следует заменить “http://tracker2k.kiev.ua/redirect.php?” на то же значения что и $replace в preg_callback2. Также генерировать ВС может виджет Meta, вместо него я использую собственный, заменяющий его. Чтобы внести изменения в остальные виджеты генерирующие ВС необходимо править код WordPress, что весьма не хорошо. Некоторые виджеты, работающие на базе дополнительных плагинов дают возможность вставлять свои теги в свои начало и конец, например Flickr.
Собственно все.

В итоге у вас должен получиться следующий код:

function preg_callback2($matches) {
  $url = explode(':', $matches[2]);
  if (($url[0] == 'http') || ($url[0] == 'https')) {
    $need = "http://tracker2k.kiev.ua";
    $replace = "http://tracker2k.kiev.ua/redirect.php?"; 
 
    if (substr($matches[2], 0, strlen($need)) != $need) {
      $matches[2] = $replace.$matches[2];
    }
  }
  return $matches[1].$matches[2].$matches[3];
} 
 
function removeLinks($content) {
  if (! is_feed()) {
    $content = preg_replace_callback('@(]*href=")([^>\"]*)("[^>]*>)@i', "preg_callback2", $content);
    $content = preg_replace_callback('@(]*href=\')([^>\"]*)(\'[^>]*>)@i', "preg_callback2", $content);
  }
  return $content;
} 
 
add_filter('the_content', 'removeLinks');
add_filter('comment_text', 'removeLinks');
add_filter('get_comment_author_link', 'removeLinks');
add_filter('get_comment_author_url_link', 'removeLinks');
add_filter('comment_url', 'removeLinks');  
 
function removeLinks_Blogroll($p1) {
  foreach ($p1 as $obj) {
    $obj->link_url = "http://tracker2k.kiev.ua/redirect.php?" . $obj->link_url;
  }
  return $p1;
} 
 
add_filter('get_bookmarks', 'removeLinks_Blogroll');

Лада с мегатюнингом

January 20, 08 by TracKer

Никогда еще не видел такого тюнинга :) )

mega-lada

YAP Checker v0.1 – Скрипт для проверки индексации Яндексом

January 18, 08 by TracKer

Update 2008-02-22: Новая версия скрипта доступна здесь: http://tracker2k.kiev.ua/projects/yap-checker

Я вот долго думал над всеми этими программами и скриптами которые проверяют ссылку на наличие ее в индексе Яндекса. Зачем делать тысячи подпольных запросов, обходить капчи, если все можно сделать официально и бесплатно, без всяких капч. У Яндекса ведь есть замечательный сервис для этого дела, называется Яндекс.XML. Нужен он для того чтобы добавлять функционал поисковика в свои продукты, и позволяет совершить 1000 бесплатных запросов в день. Тоесть по хорошему можно за день проверить не 1000 страниц, сомнительными методами преодолевая капчи, а 1000 сайтов на факт индексации каждой страницы.

В чем же заключается метод. Яндекс.XML позволяет сделать запрос по которому возвращает адреса всех страниц расположенных на заданном хосте.

Я сделал маленький скрипт ориентированный на пользователей SAPE, чтобы простыми несколькими нажатиями мышки получить список страниц с которыми нужно произвести какие-то действия (активировать/удалить/etc…).

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

Итак, что нужно для работы скрипта:

  1. Зарегистрироваться в Яндекс.XML и ввести свой IP адрес, или IP адрес той машины на которой будете осуществлять запуск скрипта.
  2. Зайти в SAPE, выбрать нужную площадку, зайти в Страницы и нажать “Экспорт страниц сайта в TXT” и сохранить полученный файл.

Запускать скрипт можно уже после первого пункта. Второй пункт нужен пользователям SAPE.

Чтобы просто показать список проиндексированных Яндексом страниц необходимо ввести только 2 параметра и подправить третий если нужно, а именно:

  1. Указать “Адрес сайта” без http и www, тоесть если адрес “http://www.yandex.ru“, то написать необходимо “yandex.ru“.
  2. Поставить галочку на “Просто показать проиндексированные страницы“.
  3. Если страниц больше 5000, соответственно поправить параметр “Приблизительное колличество страниц на сайте“.

yap-checker-show-index.jpg

Теперь детальнее о функциях для пользователей SAPE. Чтобы ими воспользоваться, необходимо скачать список страниц площадки с SAPE (о том как это сделать писалось выше), указать этот файл в поле “Файл страниц из SAPE” и выбрать одну из опций в поле “Выводить“. Что делают эти функции можно понять прочитав из название, тут все довольно просто :) Не забывайте про параметр “Приблизительное колличество страниц на сайте” его следует править каждый раз, пока я еще не разобрался как его использования можно избежать. Вот в принципе и все. Еще раз повторюсь, что скрипт написан на скорую руку, поэтому содержит недоделки и, возможно, БАГИ. Ставить его на свой хостинг рядом с сайтом КРАЙНЕ НЕ РЕКОМЕНДУЕТСЯ!

Скачать можно тут:

yap-checker-v0.1-alpha-(2008-01-18).rar

Новую версию берем тут: http://tracker2k.kiev.ua/projects/yap-checker

На моем сайте страниц около 100 и работает замечательно :)

Сказать спасибо можно в денежном эквиваленте через WebMoney:

  • Z375176157785
  • E283511877187
  • R179681475205
  • U413470734282

Update 2008-02-22: Новая версия скрипта доступна здесь: http://tracker2k.kiev.ua/projects/yap-checker

Подарок от Яндекс

January 11, 08 by TracKer

Генератор говнолинков от Белорусского Бомжа о котором я писал тут не спас. Сегодня большая часть страниц сайта выпала из индекса Яндекса. :( Поэтому доходы в САПЕ сошли практически на нуль :( Чтож, теперь буду использовать другую стратегию…

Page 1 of 212