Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Установка кода на различные движки (http://forum.sape.ru/forumdisplay.php?f=26)
-   -   Официальный клиент Perl - установка кода на сайт с поддержкой Perl (http://forum.sape.ru/showthread.php?t=93283)

Mysterious Stranger 10.07.2014 17:34

Официальный клиент 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; # аналогично

Meneldor 10.07.2014 21:16

Готов ответить на вопросы в этой теме.

vismuth 14.07.2014 21:29

Цитата:

Сообщение от Meneldor (Сообщение 1416968)
Готов ответить на вопросы в этой теме.

Здравствуйте!
А на Joomla! 2.5.14 работать будет?
И как его устанавливать для блочных ссылок?

Meneldor 14.07.2014 22:37

Цитата:

Сообщение от vismuth (Сообщение 1417411)
Здравствуйте!
А на Joomla! 2.5.14 работать будет?
И как его устанавливать для блочных ссылок?

Joomla написана на PHP, т.е. вам нужен официальные PHP-клиент SAPE, а эта тема посвящена Perl-клиенту.

vismuth 14.07.2014 22:59

Цитата:

Сообщение от Meneldor (Сообщение 1417414)
Joomla написана на PHP, т.е. вам нужен официальные PHP-клиент SAPE, а эта тема посвящена Perl-клиенту.

ааааа, понятно, спасибо...

Meneldor 01.08.2014 11:35

Добавился небольшой багфикс, версия модуля 1.2.4 будет по ссылке в первом посте с 12:00 сегодняшнего дня :)

assedo 27.08.2014 15:19

Новый код не работает. Никаких ошибок не выдаёт, просто не показывает ссылки. Ссылки, разумеется все вылетают в Error. Где искать проблему, что проверять? Со старым кодом никаких проблем нет.

Meneldor 27.08.2014 16:03

assedo, постучитесь ко мне в скайп mnmldr

assedo 27.08.2014 16:53

А можно какой-то более доступный вариант, без установки дополнительных приложений? Ну или телефон дайте в личку, я наберу.

Meneldor 27.08.2014 20:38

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


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

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.