Вернуться   Форум SAPE.RU > Система SAPE.ru > Установка кода на различные движки

-->
Ответ
 
Опции темы
Старый 10.07.2014, 17:34   #1
Сотрудник Sape
 
Аватар для Mysterious Stranger
 
Регистрация: 22.07.2009
Сообщений: 248
Вес репутации: 808
Mysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущееMysterious Stranger - прекрасное будущее
По умолчанию Официальный клиент Perl - установка кода на сайт с поддержкой Perl

Скачать клиент можно отсюда или со страницы добавления новой площадки в систему.

Изменения в новой версии
1. добавлена поддержка блочных ссылок
2. улучшена поддержка контекстных ссылок
3. добавлена возможность вывода счётчика Sape (для подсчёта SapeRank)


Внимание! Если ваш сайт имеет большое количество страниц и/или ссылок, то для эффективной работы клиентского кода и избежания замедления работы сайта нужно установить CPAN-модуль JSON::XS на сервере. В противном случае страницы могут формироваться долго и сайт может выпасть в ERROR.

Внимание, описанные ниже способы вывода ссылок доступны начиная с версии клиенткого кода 1.2.3

Подключение модуля (обязательный шаг)

Для подключения модуля SAPE необходимо разместить в исходном коде вашего сайта следующий Perl-код:
Код:
"$ENV{DOCUMENT_ROOT}/ХЕШ_ПОЛЬЗОВАТЕЛЯ/SAPE.pm" =~ /^(.+)$/;
require $1;

Сразу после этого становятся доступны классы SAPE::Client и SAPE::Context, отвечающие за вывод, соответственно, гипертекстовых ссылок (в том числе в блочном формате) и контекстных ссылок.

Вывод гипертекстовых ссылок

Для работы с гипертекстовыми ссылками используется класс SAPE::Client:1
Код:
my $sape = new SAPE::Client;

Список допустимых аргументов конструктора класса (все аргументы необязательные):

Код:
my $sape = new SAPE::Client (
   user => '', # хэш пользователя, по умолчанию определяется из пути к модулю
   host => '', # имя хоста сайта, по умолчанию $ENV{HTTP_HOST}
   request_uri => '', # адрес запрашиваемой страницы, по умолчанию $ENV{REQUEST_URI}
   multi_site => 1, # включить поддержку нескольких сайтов в одной директории
   verbose => 1, # выводить ошибки в HTML-код
   charset => '', # кодировка: windows-1251 (по умолчанию), utf8, koi8-r и т.д.
   socket_timeout => 6, # таймаут при получении данных от сервера SAPE
   force_show_code => 1, # всегда показывать код SAPE (иначе видно только роботу)
   db_dir => '', # директория для файлов данных, по умолчанию директория с модулем
   ignore_case => 1, # регистронезависимый режим работы - на свой страх и риск!
   show_counter_separately => 1, # показывать ли JS-код отдельно от ссылок
);
Вывод ссылок в обычном формате

Для получения простого (не блочного) списка ссылок следует вызывать метод return_links():

Код:
my $links = $sape->return_links; # сохранить HTML-код ссылок в переменную $links
                                 # для использования, например, в шаблонизаторе
или, к примеру:

Код:
print $sape->return_links; # вывести HTML-код ссылок
Список допустимых аргументов метода return_links (все аргументы необязательные):

Код:
$sape->return_links(
   $n, # число выводимых ссылок, undef - все ссылки
   as_block => 1, # вызвать return_block_links с теми же параметрами
);
Пример 1: вывод всех ссылок

Код:
$sape->return_links(undef); # то же, что и $sape->return_links, - вывести все ссылки
Пример 2: вывод нескольких ссылок

Код:
$sape->return_links(1); # вернуть только 1 ссылку
$sape->return_links(3); # вернуть ещё 3 ссылки
$sape->return_links; # вернуть оставшиеся ссылки
Пример 3: вывод ссылок в блочном формате (см. ниже)

Код:
$sape->return_links(undef, as_block => 1); # аналог вызова метода return_block_links
Вывод ссылок в блочном формате

Внимание! Если вы уже используете вывод ссылок с помощью старого формата вызова, то изменять код вызова необязательно – достаточно лишь обновить модуль SAPE.pm и изменить настройки сайта, включив блочный формат вывода.


Для вывода ссылок в блочном виде используется метод return_block_links() (вызывается автоматически из return_links(), если в настройках сайта установлено блочное отображение или передан параметр as_block => 1).
Список допустимых аргументов метода return_block_links() (все аргументы необязательные):

Код:
$sape->return_block_links(
   $n, # число выводимых ссылок, undef - все ссылки
   block_no_css => 1, # запретить автоматический вывод CSS в коде страницы
   block_orientation => 1, # ориентация блока: 1 - горизонтальная, 0 - вертикальная
   block_width => 'auto', # ширина блока в CSS: 'auto', '[?]px', '[?]%' и т.д.
);
Пример 4: вывод всех ссылок в блочном формате

Код:
$sape->return_block_links; # все ссылки в виде одного блока
Пример 5: вывод ссылок в нескольких блоках

Код:
$sape->return_block_links(1); # вернуть только 1 ссылку в первом блоке
$sape->return_block_links; # вернуть оставшиеся ссылки во втором блоке

Пример 6: вывод блока ссылок с изменёнными параметрами

Код:
$sape->return_block_links(2, block_orientation => 0, block_width => '120px');
     # вернуть блок из 2 ссылок вертикальной ориентации шириной 120 пикселей
Вывод контекстных ссылок

Для работы с контекстными ссылками используется класс SAPE::Context:

Код:
my $sape_ctx = new SAPE::Context;
Список допустимых аргументов конструктора класса – тот же, что и у SAPE::Client.

Ссылки в конкретном фрагменте текста

Для вывода контекстных ссылок в определённом фрагменте текста следует вызывать метод replace_in_text_segment(), передавая в качестве параметра либо ссылку (ref) на переменную с текстом (оптимально для экономии памяти, замена будет произведена прямо внутри переменной), либо просто переменную с текстом (в этом случае текст с заменой будет возвращён в качестве результата вызова функции):

Код:
$sape_ctx->replace_in_text_segment(\$text); # все изменения - внутри переменной
или

Код:
$new = $sape_ctx->replace_in_text_segment($text); # изменения - в новую переменную
Рекомендуется использовать первый способ, если есть такая возможность.

Ссылки в коде страницы

Для вывода контекстных ссылок в пределах всей страницы, в том числе в нескольких местах на странице, следует вручную расставить в исходном коде страницы теги <sape_index> ... </sape_index>, заключив в них фрагменты страницы для вывода ссылок, либо ссылки будут выводиться внутри тега <body> ... </body>.

Существует два режима работы метода replace_in_page(), используемого для вывода ссылок.

1. Рекомендуется! Вызов метода с параметром аналогично вызову replace_in_text_segment() (ссылка на переменную для экономии памяти или просто переменная). Поиск тегов <sape_index> или <body> и вывод ссылок происходит в тексте, переданном в качестве параметра.

Код:
$sape_ctx->replace_in_page(\$html); # все изменения - внутри переменной
или

Код:
$new = $sape_ctx->replace_in_page($html); # изменения - в новую переменную
Разница между методами replace_in_text_segment() и replace_in_page() в том, что в первый передаются фрагменты текста для установки контекстных ссылок в них, а во второй – полностью HTML-документ с блоками <sape_index> ... </sape_index> или <body> ... </body>, причём автоматический вывод счётчика производится только в функции replace_in_page() (см. ниже).

2. Только для сайтов с CGI. Вызов метода без параметров. Переопределяется системная Perl-функция print, весь выводимый в ходе работы кода вашего сайта контент накапливается в буфере, происходит размещение ссылок внутри буфера и их вывод системными средствами.

Код:
$sape_ctx->replace_in_page; # переопределить print
print $html; # вывод кода страницы со ссылками - после окончания работы скрипта
Этот формат вызова реализован по аналогии с официальным клиентским кодом для платформы PHP, однако с ограничениями:
  • не работает в mod_perl,
  • может не работать в FastCGI,
  • выводит полученный текст только по окончании работы скрипта, а не порциями, – этот режим не рекомендуется и реализован лишь для совместимости с модулем на PHP.

Вывод обязательного JavaScript-контента

Оба класса – SAPE::Client и SAPE::Context – поддерживают автоматический или принудительный вывод JavaScript-контента, поставляемого Sape (cчётчик Sape для подсчёта SapeRank, пользовательские счётчики). По умолчанию код JS выводится вместе со ссылками в методах класса SAPE::Client и только в методе replace_in_page() класса SAPE::Context. Однако если передан параметр show_counter_separately => 1 в конструктор класса, то счётчик необходимо выводить явным вызовом функции return_counter():

Код:
$counter_html = $sape->return_counter; # код счётчика - в переменной $counter_html
или

Код:
$counter_html = $sape_ctx->return_counter; # аналогично

Последний раз редактировалось Mysterious Stranger; 14.07.2014 в 14:22.
Mysterious Stranger вне форума   Ответить с цитированием
Старый 10.07.2014, 21:16   #2
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Готов ответить на вопросы в этой теме.
Meneldor вне форума   Ответить с цитированием
Старый 14.07.2014, 21:29   #3
Новичок
 
Регистрация: 10.05.2014
Сообщений: 25
Вес репутации: 0
vismuth на пути к лучшему
По умолчанию

Цитата:
Сообщение от Meneldor Посмотреть сообщение
Готов ответить на вопросы в этой теме.
Здравствуйте!
А на Joomla! 2.5.14 работать будет?
И как его устанавливать для блочных ссылок?
vismuth вне форума   Ответить с цитированием
Старый 14.07.2014, 22:37   #4
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от vismuth Посмотреть сообщение
Здравствуйте!
А на Joomla! 2.5.14 работать будет?
И как его устанавливать для блочных ссылок?
Joomla написана на PHP, т.е. вам нужен официальные PHP-клиент SAPE, а эта тема посвящена Perl-клиенту.
Meneldor вне форума   Ответить с цитированием
Старый 14.07.2014, 22:59   #5
Новичок
 
Регистрация: 10.05.2014
Сообщений: 25
Вес репутации: 0
vismuth на пути к лучшему
По умолчанию

Цитата:
Сообщение от Meneldor Посмотреть сообщение
Joomla написана на PHP, т.е. вам нужен официальные PHP-клиент SAPE, а эта тема посвящена Perl-клиенту.
ааааа, понятно, спасибо...
vismuth вне форума   Ответить с цитированием
Старый 01.08.2014, 11:35   #6
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Добавился небольшой багфикс, версия модуля 1.2.4 будет по ссылке в первом посте с 12:00 сегодняшнего дня
Meneldor вне форума   Ответить с цитированием
Старый 27.08.2014, 15:19   #7
Специалист
 
Регистрация: 31.03.2008
Сообщений: 115
Вес репутации: 198
assedo скоро станет известенassedo скоро станет известен
По умолчанию

Новый код не работает. Никаких ошибок не выдаёт, просто не показывает ссылки. Ссылки, разумеется все вылетают в Error. Где искать проблему, что проверять? Со старым кодом никаких проблем нет.
assedo вне форума   Ответить с цитированием
Старый 27.08.2014, 16:03   #8
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

assedo, постучитесь ко мне в скайп mnmldr
Meneldor вне форума   Ответить с цитированием
Старый 27.08.2014, 16:53   #9
Специалист
 
Регистрация: 31.03.2008
Сообщений: 115
Вес репутации: 198
assedo скоро станет известенassedo скоро станет известен
По умолчанию

А можно какой-то более доступный вариант, без установки дополнительных приложений? Ну или телефон дайте в личку, я наберу.
assedo вне форума   Ответить с цитированием
Старый 27.08.2014, 20:38   #10
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Скайп - оперативнее всего. Телефон не поможет - наверняка нужно будет куски кода смотреть. Напишите в почту, давайте через неё попробуем. meneldor@metallibrary.ru
Meneldor вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий клиент на Perl или для nginx? alexbyk Установка кода на различные движки 13 29.03.2012 20:09
Установка кода на perl Klopopryg Установка кода на различные движки 19 23.11.2009 23:16
установка кода на 2 сайта (PERL) - 10$ Henpyxa Установка кода на различные движки 0 26.02.2008 13:42
Установка нового кода на страницы с SSI или Perl возможна? tmatm Контекстные ссылки и все, что с ними связано 15 03.02.2008 21:08
Установка Perl и PHP-кода сапы на один сайт Kerk Вопросы по работе системы 1 11.07.2007 12:53


Часовой пояс GMT +3, время: 09:06.