Закрыть
Загрузка данных
Логин:   Пароль:      
Регистрация   Забыли пароль?

Поиск по Bigstreet:



Важные объявления:

Призовой фонд bigstreet




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

Фонд помощи разработчикам bigstreet

+ 500 рублей

15 горячих:

Закрыть
Загрузить:
Указать:
Выравнивание:    Копирайт:
Альт
Цвет шрифта Закрыть
Белый Розовый Серебряный Оливковый Красно-коричневый Лимонный Зеленый Темно-синий Желтый Красный Серый Фиолетовый Водный Зеленовато-голубой Голубой
Выделить маркером Закрыть
Розовый Серебряный Оливковый Красно-коричневый Лимонный Зеленый Темно-синий Желтый Красный Серый Фиолетовый Водный Зеленовато-голубой Голубой Черный
Смайлики ;) Закрыть
Улыбка Нахмуриться Подмигивание Язык Смех Смущение Нерешительность Сюрприз Поцелуй Вопль Класс Денежки Ошибся Невинность Плач Рот на замке

Внутренняя оптимизация сайта: Закрываем внешние ссылки (и валидный target = "_blank")

Очередное усовершенствование движка BigStreet для нашего сайта — закрытые внешние ссылки и, как бонус, валидное открытие внешних ссылок в новом окне.
В двух словах реализация такова: Создаём закрытый для поисковых систем скрипт редиректа,
который принимает адрес в виде GET переменной. Перед выводом сгенерированной траницы сайта
в браузер обрабатываем её нашим плагином для Smarty, который заменяет все внешние ссылки на редирект.
Скрипт понимает атрибут rel = «allow», который указывает на то, что ссылку трогать не надо. Если
у внешней ссылки нет атрибута rel=«external», скрипт его дописывает.

По-поводу открытия внешних ссылок в новом окне:
После загрузки страницы, JavaScript ищет все ссылки с атрибутом rel=«external» и выставляет им атрибут target = «_blank».

То есть обычная внешняя ссылка станет для поисковика такой:
  1. <a rel="external" href="http://antisite.ru/external/?link=http://ya.ru">link</a>



А такая ссылка:
  1. <a rel="external allow" href="http://ya.ru">link</a>

останется нетронутой.

Подробности для тех, кто хочет внедрить это изменение, в блоге об улучшениях BigStreet на нашем сайте.

И, кстати, мы почти закончили прикручивать WYSIWYG редактор TinyMCE и JavaScript подсветку синтаксиса SyntaxHighlighter к BigStreet'у.
Как только решим проблемы совместимости с Интернет Эксплорером, сразу будет мануал :)

С Уважением, команда Antisite.ru
antisite 12 мая 2009 16:01 комментариев: 3
:) 6,51 :(
просмотров: 842

Комментарии:
Кто-нибдуь делал подобное на своем сайте? Тема актуальная, и заслуживает внимания.
Инструкция (на указанном сайте) довольно простая… но меня не покидает чувство, что в коде файла ( outputfilter.ext_links.php ) что-то не так.
Спросил у автора на его сайте, в ответ — тишина.

Цитаирую инструкцию
Затем создаём модуль для Smarty. В каталоге «vendors/Smarty-2.6.20/plugins/» создаём файл «outputfilter.ext_links.php»

  1.  
  2. function smarty_outputfilter_ext_links($source, &$smarty)
  3. {
  4.    
  5.         ereg('<\/textarea>', $source, $saved);
  6.  
  7.         preg_match('/[^.]+\.[^.]+$/', $_SERVER['HTTP_HOST'], $match);
  8.         $host = $match[0];
  9.  
  10.         preg_match_all('/ $value) {
  11.                 ereg('http:\/\/(.+)"', $value, $url);
  12.                 if(!(ereg($host, $url[1]))) {
  13.                         if(!ereg('rel\s*=\s*".*allow.*"', $value))
  14.                                 if(ereg('rel\s*=\s*".*external.*"', $value))
  15.                                         $source = preg_replace('/(href[ ="]+http:\/\/)'.str_replace('/', '\/', $url[1]).'"/U', '\1'.$host.'/external/?link=http://'.$url[1].'"', $source);
  16.                                 else
  17.                                         $source = preg_replace('/(href[ ="]+http:\/\/)'.str_replace('/', '\/', $url[1]).'"/U', 'rel="external" \1'.$host.'/external/?link=http://'.$url[1].'"', $source);
  18.                         else
  19.                                 if(!ereg('rel\s*=\s*".*external.*"', $value))
  20.                                         $source = preg_replace('/(href[ ="]+http:\/\/'.str_replace('/', '\/', $url[1]).'")/U', 'rel="external" \1', $source);
  21.  
  22.                 }
  23.         }
  24.        
  25.         $source = ereg_replace('', $saved[0], preg_replace('/(rel\s*=\s*".*)\s*allow\s*(.*")/U', '\1 \2', $source));
  26.     return $source;
  27. }
  28.  


Так вот, в результате сайт ругается на строку
  1.  
  2. ereg('http:\/\/(.+)"', $value, $url);
  3.  

а в строке
  1.  
  2. preg_match_all('/ $value) {
  3.  

как будто бы не хватает аргументов...
Буду признателен всем, кто-то сможет прокомментировать ситуацию, или поможет разобраться в чем проблема.
tommyred tommyred   13 июня 2009 11:32
:) 0 :( #
Вы совершенно правы. По какой-то причине парсер съедает часть кода.
Я вам отписался со ссылкой на полный файл.
antisite   16 июня 2009 18:25
:) 1 :( #
Спасибо, и за ответ и за мод.
tommyred tommyred   16 июня 2009 19:28
:) 0 :( #
Написать комментарий
Только зарегистрированные пользователи могут оставлять комментарии.





Подписаться на рассылку
"Бесплатный движок bigstreet.ru"


 
© 2009. | О сайте | Инструкции | Обратная связь
© Powered by BigStreet RC1-maps SVN Сервис коротких адресов День святого Валентина
www.webmoney.ru Участник проекта CMS Magazine


Работа с БД:
 Время - 0.1255
 Запросов - 8
Работа с кэшем:
 Время - 0.0021
 Записей - 2
 Прочтений - 5
Общее время:
 0.4704