RUS
  • RUS
  • ENG

Инструкции по установке кода Sape на различные платформы (PHP, Perl и др.) и движки (WordPress, DLE, Joomla и др.)

Последние изменения: 26.04.2023

Так же на нашем форуме постоянно идут обсуждения и пользователи выкладывают свои методы наиболее оптимального внедрения кода системы Sape на различные движки.

Обобщенный список инструкций смотрите в этом разделе форума.


Официальный клиент PHP - установка кода на сайт с поддержкой PHP

Официальный клиент Perl - установка кода на сайт с поддержкой Perl

Как установить код на сайт, написанный на HTML?

Установка кода на CMS Wordpress с помощью плагина (для Wordpress версии 4.7.2 и выше)

Инструкцию по добавлению контекстного кода в cms DataLife Engine (DLE)

DLE: инструкция по установке кода

Установка кода на CMS DLE с помощью плагина (для DLE версии от 11 и выше)

Установка кода на CMS Joomla с помощью плагина (версия Joomla 3)

Установка кода на CMS Drupal с помощью плагина (для версии Drupal 8)

Размещение кода на сайте, который использует SSI и файлы *.shtml

Мой сайт на JAVA, как мне его добавить?

Установка кода на сайты ucoz

Установка кода на LogicBoard

Установка кода на Umi.Cms

Установка кода на Instant.Cms

Установка кода на Smarty 3xx

Установка кода на Drupal

Установка кода на MODx

Установка кода на IPB

Установка кода на phpBB 3

Установка кода на Vbulletin 4

Установка кода на Python

Установка кода на Ruby-on-Rails

Установка кода на Parser

Установка кода на сайт с поддержкой ASP.NET

Установка кода на сайт с поддержкой ASP


Официальный клиент PHP - установка кода на сайт с поддержкой PHP

Установка кода контекстных ссылок

Блочный формат вывода ссылок

Вывод счётчика для подсчёта SapeRank


Для возможности отображения гипертекстовых ссылок на тех страницах сайта, которые вы хотели бы подключить к системе, необходимо в начале исходного кода этих страниц сделать следующую php-вставку:

<?php
     if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'ваш_хэш_код');
     }
     require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
     $sape = new SAPE_client();
?>

Далее, в тех местах страницы, где вы хотели бы выводить ссылки, необходимо вставить следующий код:

<?php 
    echo $sape->return_links($n); 
?> 

 

где $n – количество ссылок, которое вы хотели бы вывести в данном месте страницы. Последний вызов этой функции в документе обязательно должен производиться без параметров.

Пример: предположим, Вы планируете выводить на странице 5 ссылок в 3-х блоках, разнесенных в разные места страницы, например, 1 ссылку под левым навигационным меню, 2 ссылки под правым меню и оставшиеся 2 ссылки в «подвале» страницы. В этой ситуации вам необходимо сделать в исходном коде страницы 3 дополнительные php-вставки:

 

echo $sape->return_links(1); // под левым меню;

echo $sape->return_links(2); // под правым меню;

echo $sape->return_links();  // в «подвале» (обратите внимание, функция вызывается без параметра, т.к. это последний ее вызов на данной странице)

В том случае, если страница сайта собирается последовательным включением нескольких файлов (через include, require) или вызовом каких-либо функций, то для вызова кода внутри этих файлов или функций необходимо определить переменную $sape как глобальную при создании клиента и перед тем, как использовать ее.

То есть первоначальная инициация клиента будет иметь вид:

 

 <?php
    global $sape;
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'ваш_хэш_код');
    }
    require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
    $sape = new SAPE_client();
?>

, а последующее использование (уже внутри подключаемого файла или в теле функции):

<?php
    global $sape;
    echo $sape->return_links();
?>

Важно: для аккуратного оформления ссылок вы можете создать для них отдельный класс стилей CSS и указать название этого класса в разделе «настройки» Вашей площадки, который будет доступен после добавления сайта в систему.

В случае, если структура или содержание страниц Вашего сайта не позволяет разносить ссылки в разные места страницы, можно воспользоваться кодом вывода ссылок единым блоком, но мы крайне не рекомендуем использование такого варианта размещения:

в планируемом месте вывода ссылочного блока в исходном коде страницы необходимо произвести следующую php-вставку:

<?php
     if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'ваш_хэш_код');
     }
     require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
     $sape = new SAPE_client();
     echo $sape->return_links();
?>

 

Наверх


Официальный клиент Perl - установка кода на сайт с поддержкой Perl

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

Необходимое окружение

Для работы Perl-модуля требуется наличие следующих сторонних модулей, доступных в библиотеке CPAN или в виде пакетов для большинства ОС:

  • JSON (также рекомендуется JSON::XS)

  • LWP::UserAgent

  • MIME::Base64

Установка из CPAN:

perl -MCPAN -e shell

cpan> install JSON
cpan> install JSON::XS
cpan> install LWP::UserAgent
cpan> install MIME::Base64

Установка из пакетов Debian:

apt-get install libjson-perl libjson-xs-perl libmime-base64-perl libwww-perl

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

Для подключения модуля SAPE необходимо разместить в исходном коде вашего сайта следующий Perl-код:

"$ENV{DOCUMENT_ROOT}/ХЕШ_ПОЛЬЗОВАТЕЛЯ/SAPE.pm" =~ /^(.+)$/;
require $1;

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

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

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

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

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-код отдельно от ссылок
);

 

Примечание: если домен вашего сайта содержит нелатинские символы, то укажите в параметре host домен в punycode. Например, для домена сайт.рф нужно указать значение xn--80aswg.xn--p1ai

Вывод ссылок в обычном формате

Для получения простого (не блочного) списка ссылок следует вызывать метод 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; # аналогично

Наверх


Как установить код на сайт, написанный на HTML?

Тут могут быть два различных варианта:

  1. Ваш хостинг поддерживает PHP. В этом случае, вам нужно заставить html-страницы обрабатывать PHP-код, который выводит ссылки. Для этого достаточно прописать в файле .htaccess (он должен находиться в корневой директории сайта) следующую строку: AddHandler application/x-httpd-php .php .htm .html Если файла на вашем хостинге нет, то его можно создать в блокноте и закачать в корень сайта. Если этот способ не сработает, уточните у хостера, что Вам нужно прописывать в файле .htaccess для того, чтобы html-страницы обрабатывали PHP код. Если у вас получилось заставить html страницы обрабатывать PHP код, то дальше вам следует выполнить инструкции по размещению кода описанные здесь.

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

Наверх


Инструкцию по добавлению контекстного кода в cms DataLife Engine (DLE)

Открываем файл index.php. В нем находим строчку кода:  

$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );

Перед строчкой добавляем: 

define('_SAPE_USER', 'Ваш хэш код'); 
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php')); 
$sape_context = new SAPE_context(); 

Заменяем строку:

 $tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );

На: 

$tpl->set ( '{content}', "<div id='dle-content'>" .$sape_context->replace_in_text_segment($tpl->result['content']) . "</div>" );

 

На этом установка контекстного кода для CMS DLE закончена.

Если у вас версия 10.4 и выше, то установка кода производится в файл /engine/modules/main.php 

Наверх


DLE: инструкция по установке кода

Для начала выполните пункты 1-2-3-4 для хостинга с поддержкой PHP отсюда.

Сам код  вызова ссылок нужно вставлять не в шаблон, а в файл index.php.

 

Если у вас версия 10.4 и выше, то установка кода производится в файл /engine/modules/main.php

 

В файле index.php находите следующее:

$tpl->compile('main');

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

     if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'ВАШ_ХЕШ_КОД'); 
     }
     require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));

     $o = array();     
 
     $o['host'] = 'ваш_сайт.ru'; // БЕЗ HTTP://
     $sape = new SAPE_client($o);
     $tpl->set('{sape_links}', $sape->return_links());

 

* ВАШ_ХЕШ_КОД вы можете посмотреть тут в разделе "Для хостинга с поддержкой PHP" -> "Установка кода отображения гипертекстовых ссылок."

А в файле вашего шаблона для вывода кода sape используете {sape_links}.

Наверх


Размещение кода на сайте, который использует SSI и файлы *.shtml

В этом случае код вызова SAPE необходимо записать в файл sape1.php (его можно создать через блокнот) и закачать этот файл в корень сайта.

Далее, на каждой странице сайта необходимо прописать строку

<!--#include virtual="/sape1.php" -->

Наверх


Мой сайт на JAVA, как мне его добавить?

К сожалению, самостоятельно этот вариант мы еще не реализовали, но сторонние разработчики уже имеют положительный опыт:

Инструкцию по установке SAPE на JAVA можно найти тут.

Наверх


Установка кода на сайты ucoz

См. подробную инструкцию на профильном форуме.

Наверх


Установка кода на LogicBoard

См. ветку нашего форума

Наверх


Установка кода на Umi.Cms

Обсуждение см. в ветке нашего форума

Наверх


Установка кода на Instant.Cms

См. инструкцию от нашего пользователя

Наверх


Установка кода на Smarty 3xx

См. инструкцию нашего пользователя

Наверх


Установка кода на Drupal

Добавляем блок с форматом ввода PHP code и содержимым:

 

<?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'ваш уникальный идентификатор в sape');
}
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));     
$sape = new SAPE_client();
echo $sape->return_links();
?>

 

И перемещаем блок в нужный регион.

Также можно воспользоваться модулем для Drupal для автоматической установки кода.

Наверх


Установка кода на MODx

1) В файле index.php в корне CMS MODx нужно добавить

<?php
global $sape;
if (!defined('_SAPE_USER')){
define('_SAPE_USER', '8a8da5badfaef9223179c203f5cc5114');
}
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
$sape = new SAPE_client();
?>

2) В админке MODx создаем сниппет с названием SAPE, код сниппета:

<?php
global $sape;
echo $sape->return_links();
?>

3) В шаблоне страницы вставляем [!SAPE!] в месте вывода ссылок.

Наверх


Установка кода на IPB

1) В корне сайта разместите папку с sape.php, скачанную со страницы добавления новой площадки

2) В корне форума создайте файл sape.php с кодом:

 

<?php
global $sape;
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'ваш хэш-код');
}  
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
$sape = new SAPE_client();
echo $sape->return_links();
?>

3) Зайдите в шаблон Глобальные -->globalTemplate и в нужном месте для вывода ссылок разместите:

{parse include="sape.php"}

 

Наверх


Установка кода на phpBB 3

Ветка обсуждения на нашем форуме.

Наверх


Установка кода на Vbulletin 4

1) Установить скачанную со страницы добавления новой площадки папку с sape.php в корень сайта, права 777

2) В админке форума выбрать категорию "Продукты и модули"-->"Добавить новый модуль", заполнить поля следующим образом:

Продукт — Vbulletin, Местоположение модуля — global_bootstrap_init_start, Заголовок — произвольный, Порядок выполнения — 5, Код PHP модуля:

if (!defined('_SAPE_USER')) {
    define('_SAPE_USER','ваш хэш-код');
}

require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
$o = array();

$o['host'] = 'ваш домен без http://';
if (substr($_GET['uri'], 0, 6) == "/tags/") {
    $o['request_uri'] = str_replace ("%2B", "+", str_replace ("%2F", "/", rawurlencode ($_GET['uri'])));
} else {
    $o['request_uri'] = $_GET['uri'];
}

$o['force_show_code'] = true;

$sape = new SAPE_client($o);
unset($o);

$sape1 = $sape->return_links();
$preRegister['sape1'] = $sape1;
vB_Template::preRegister('footer', $preRegister);

Если ссылки планируется размещать не в футере, то footer заменить на другое значение.

Модуль включен - да, сохранить и перезагрузить.

3) В админке форума в "Стили и шаблоны - Управление стилями", выбрать нужный стиль, "редактировать шаблоны", выбрать footer (см. конец п.2) и вставить код

{vb:raw sape1}

Сохранить.

Наверх


Установка кода на Python

К сожалению, готового решения не предусмотрено.

Наверх


Установка кода на Ruby-on-Rails

К сожалению, готового решения не предусмотрено.

Можно воспользоваться вариантом нашего пользователя

Наверх


Установка кода на Parser

1) В корне сайта создаем файл sape_code.php с содержанием:

<?php
if (!defined('_SAPE_USER')){
    define('_SAPE_USER', 'ваш уникальный идентификатор в sape');
}
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
$o = array();

$o['request_uri'] = $_GET['pageuri'];   
$a = $_SERVER['REQUEST_URI']; 
$sape = new SAPE_client($o);
echo $sape->return_links();
?>

2) Открываем файл auto.p вашего сайта и добавляем новую функцию:

@usePHP[fileName][path;file]
$path[$request:uri]
$path[^path.match[/.*?^$][]{}]
$file[^file::load[text;http://$env:SERVER_NAME/$path/$fileName;
$.form[$form:fields]
]]
^untaint{$file.text}

3) В месте, где нужно выводить ссылки, добавляем код

^usePHP[/sape_code.php?pageuri=$request:uri]

 

Наверх


Установка кода на сайт с поддержкой ASP.NET

Простейшая установка

1. Для начала выполните пункты 1-2-3 для хостинга с поддержкой PHP отсюда.

2. Откройте файл web.config и внесите в него следующие изменения:

  • В ветку configuration/configSections добавьте следующую запись:

<sectionGroup name="effetto.Sape">
    <section name="SapeConfig"
        type="effetto.Sape.SapeConfigSection, SAPE"
        allowLocation="true"
        requirePermission="false" 
        allowDefinition="Everywhere"/>
    </sectionGroup>
  • В ветку configuration/system.web/pages/controls добавьте следующую запись:

<add tagPrefix="efe" namespace="effetto.Sape" assembly="SAPE"/>
  • В корень ветки configuration добавьте следующую запись:

<effetto.Sape>
    <SapeConfig UserId="877009c2f0dc4fd8a4e5c48d21e5fce5">
          <DefaultDocuments>
            <add Name="Default.aspx" />
          </DefaultDocuments>
    </SapeConfig>
</effetto.Sape>

3. В том месте страницы, где вы хотите выводить ссылки, разместите следующий код:

<efe:SapeLinks runat="server"/>

Внимание! Среда Visual Studio может автоматически вставить ID контролу со словом SapeLinks, - обязательно удалите его.

4. (опционально) Фрагмент страницы, в котором вы хотите отображать контекстные ссылки поместите внутри следующей конструкции:

<efe:SapeContext runat="server">
    <Content>
          Фрагмент страницы под контекст
    </Content>
</efe:SapeContext>

 

Установка нескольких блоков вывода ссылок на одной странице

1. Разместите в местах страницы, где вы хотите выводить ссылки следующий код следующего вида:

<efe:SapeLinks runat="server" Capacity="3" Priority="10" />

Где Capacity – число ссылок, Priority - приоритет блока в порядке обработки блоков, большее значение о значение обеспечивает предпочтение по наполнению ссылками.

Пример: На странице имеется два блока ссылок:

<efe:SapeLinks runat="server" Capacity="3" Priority="20" />
<efe:SapeLinks runat="server" Capacity="5" Priority="10" />

И на странице получено к размещению 7 ссылок. Тогда в первую очередь будет заполнен блок с приоритетом 20, в него будет помещено 3 первых ссылки, во вторую очередь будет заполнен блок с приоритетом 10, в него поместятся оставшиеся 4, и останется одно свободное место во втором блоке. Внимание! Указанный способ настройки влияет только на размещение ссылок, манипулировать числом продаваемых ссылок возможно только в интерфейсе системы SAPE. При превышении числа проданных ссылок над суммой чисел Capacity на странице будут размещены только первые n ссылок, где n – сумма Capacity всех блоков SapeLinks. Максимальное число ссылок в одном блоке равно 255, если число ссылок не задано оно равняется максимально возможному числу ссылок к размещению, то есть 255. Приоритет Priority по умолчанию равняется 0. Указанные ниже две строки эквивалентны:

<efe:SapeLinks runat="server" Capacity="255" Priority="0" />
<efe:SapeLinks runat="server" />

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

 

Детальная настройка системы, подробное описание параметров

Максимально возможный раздел конфигурирования системы в файле конфигурации web.config выглядит следующим образом.

<effetto.Sape>
    <SapeConfig UserId="877009c2f0dc4fd8a4e5c48d21e5fce5"
        CacheTimeout="60"
        CacheInSQL="true"
        ConnectionStringName=""
        SystemId="47474747-4747-4747-4747-474747474747"
        ExpireTimeout="600"
        Host=""
        UrlAnalyzer="true"
        QueryAnalyzer="true"
        QueryFilter="false"
        QueryParameters=""
        IgnoreCase="true"
        RussianNormalizer="true"
        ForceCheckCode="true"
        <DefaultDocuments>
            <add Name="документ1" />
            <add Name="документ2" />
        </DefaultDocuments>
    </SapeConfig>
</effetto.Sape>

CacheTimeout - время в минутах, которое информация о купленных ссылках будет находиться в кеше системы до следующего обновления с сервера системы SAPE, не менее 10 минут. По умолчанию 30. CacheInSQL – хранить ли кеш в базе MS SQL. Если истинно, то необходимо в параметре ConnectionStringName указать имя строки соединения. Если планируется совместное использование хранилища более чем одной системой, необходимо также задать параметр SystemId – типа GUID. По умолчанию false. ConnectionStringName – Имя строки соединения для подключения к хранилищу кеша в базе MS SQL. Сами строки соединения необходимо разместить в разделе configuration / connectionStrings например так:

<add
name="SapeConnectionString"
connectionString="
    data source=localhost;
    Integrated ecurity=True;
    database=sape"/>

тогда параметр ConnectionStringName следует установить равным "SapeConnectionString". SystemId – указывается при совместном использовании нескольких систем с одной базой. Сгенерировать GUID можно, например, в Visual Studio (Tools->Create GUID) или на сайте типа http://www.guidgenerator.com/. ExpireTimeout – период, в течение которого невостребованная информация остается в базе. По истечении таймаута информация из кеша удаляется и более не запрашивается. По умолчанию 600. Host – позволяет явно указать параметр хоста, для которого будут отображаться ссылки, даже если хост в запросе пользователя указан другой. Для сайтов с несколькими хостами оставьте этот параметр неуказанным или пустым. Параметр указывается без протокола, например «sape.ru». UrlAnalyzer – параметр указывает, применять или нет систему анализа URL. Если false, то анализ не применяется и URL запроса должен в точности соответствовать URL ссылки, включая страницы по умолчанию, слеши директорий и т.д. Если true то производится анализ документов по умолчанию, завершающих слешей и т.д. По умолчанию параметр равен true. Например для выключенного параметра указанные ниже строки будут различными URL, а для включенного – эквивалентными:   /Folder/Default.aspx?Id=47       /Folder/?Id=47       /Folder?Id=47

QueryAnalyzer – параметр указывает, применять или нет систему анализа строки запроса. Если false, то анализ не применяется и порядок параметров URL страницы должен строго соответствовать порядку параметров URL ссылки в системе SAPE. Если true, то применяется анализ параметров. Анализатор параметров так же отсекает различный мусор из стандартного представления строки параметров, если у вас используется особая система передачи параметров, то отключите данную опцию. По умолчанию параметр равен true. Параметр анализируется только при UrlAnalyzer =”true”. Например следующие строки будут характеризовать различные URL при выключенном параметре и один – при включенном: /Default.aspx?Id=47&Author=User /Default.aspx?Author=User&Id=47& /?Author=User&Id=47 /Default.aspx?Author=User&Id=47&34534sdfr

QueryFilter – параметр указывает, применять или нет систему предопределенных параметров. Если false – то все параметры URL считаются значимыми. Если true – то значимые параметры следует перечислить в параметр QueryParameters через запятую, будут анализироватьс ятолко указанные параметры. По умолчанию false. При QueryParameters=”Id, Author” следующие строки будут восприняты как идентичные URL при включенном параметре, и как различные – при выключенном: /Default.aspx?Id=47&Author=User /Default.aspx?Id=47&Author=User&SEOCheck=qwerty

Указанную опцию следует включать только если вам заведомо известны все параметры, которые использует ваша страница / сайт. Данная опция позволяет ссылкам не исчезать при появлении неизвестных параметров, защищая таким образом от обнаружения факта автоматического размещения ссылок. QueryParameters – строковый параметр, перечисляющий все используемые get параметры, при включенной опции QueryFilter неуказанные параметры не будут восприниматься системой. IgnoreCase – параметр указывает, учитывать или нет при сравнениях регистр букв (для имен файлов и значений параметров). По умолчанию false. RussianNormalizer – параметр позволяет активировать или деактивировать систему преобразования русских URL. По умолчанию true, при использовании других национальных языков рекомендуется устанавливать этот параметр в false. ForceCheckCode – при установке параметра в true проверочный код отображается всегда. Используется для отладки, во время штатной работы рекомендуется отключать. По умолчанию false. DefaultDocuments – список, перечисляющий все используемые по умолчанию документы, класса dafeult.aspx, index.php, index.html или любые другие, принятые вашей системой на сайте.

 

Настройка отдельной страницы

Помимо общей настройки через web.config файл доступно конфигурирование некоторых параметров отдельных страниц. Для конфигурирования отдельной странице разместите на ней следующий код контрола:

<efe:SapePageConfig runat="server" />

И перечислите в параметрах контрола параметры, которые вы хотите установить. Список доступных параметров:

  • Host,

  • UrlAnalyzer,

  • QueryAnalyzer,

  • QueryFilter,

  • QueryParameters,

  • IgnoreCase,

  • UserId

Действие параметров абсолютно аналогично описанным в предыдущем разделе за исключением того, что областью их действия является только страница, на которой выполняется этот код. Внимание! На странице возможно размещение только одного контрола SapePageConfig. Внимание! Параметры, указанные в контроле SapePageConfig переопределяют параметры, указанные в web.config. Пример:

<efe:SapePageConfig
    runat="server"
    UrlAnalyzer="True"
    QueryAnalyzer="True"
    QueryFilter="True"
    IgnoreCase="True"
    QueryParameters="a,bb"/>

 

Программный вызов кода вывода

Компоненты модели системы размещения ссылок могут использоваться как декларативно (описано выше), так и непосредственно на языке программирования, как показано в текущей главе. Обратите внимение, что непосредственно не может быть создан объект настройки страницы. Использование объектов не может заменить конфигурирования системы через файл web.config. Ниже представлен общий шаблон работы с системой (с комментариями), весь код на языке C#:

//Инициализация пользователя, идентификаор берется из конфига
SapeUser user = SapeFactory.Factory.GetUser();
//Инициализация пользователя, идентификаор задается явно
//SapeUser user = SapeFactory.Factory.GetUser("User Id");

//Инициализация хоста, хост берется автоматически или из конфига
SapeHost host = user.GetHost();
//Инициализация хоста, хост указывается явно
//SapeHost host = user.GetHost("example.ru");

//Инициализация URL, URL определяется автоматически по запросу пользователя
SapeUrl url = new SapeUrl();
//Инициализация URL, URL указывается явно
//SapeUrl url = new SapeUrl("/MyTestPage.aspx");

//Получение объекта страницы системы, явное указание URL
SapePage page = host.GetPage(url);
//Получение объекта страницы системы, URL определяется автоматически
//SapePage page = host.GetPage();

//Получение списка ссылок для ручной обработки
if (page != null)
    List<SapeLink> links = page.GetLinks();
//Получение списка контекстных ссылок
//List<SapeContextLink> contextLinks = page.GetContextLinks();
foreach (SapeLink link in links)
{
    Response.Write(link.RawLink + host.Delimiter);
}
if (page != null)
{
    //Получение всех ссылок строкой
    Response.Write(page.GetLinksAsString());
    //Получение диапазона сылок
    Response.Write(page.GetLinksAsString(0, 1)); // первые 2 ссылки
    Response.Write(" some text ");
    Response.Write(page.GetLinksAsString(2, 4)); // ссылки с 3 по 5
    //Расстановка в тексте контекстных ссылок.
    //Внимание! Вы сами следите за тем чтобы текст индексировался
    //и выводился один и тот же.
    Response.Write(page.MakeContestLinks("some content"));
}

Далее представлен пример реализации самой простой задачи – отображения всех ссылок (не контекст) одним блоком (все настройки беруться из конфига):

Response.Write(
    SapeFactory.Factory.GetUser().GetHost().GetPageOrDefault().GetLinksAsString()
);

При программном использовании системы незабудьте указать неймспейс effetto.Sape :

using effetto.Sape;

 

Особенности работы с контекстными ссылками

Простейший способ использования контекста выглядит так:

<efe:SapeContext runat="server">
    <Content>
        Фрагмент страницы под контекст
    </Content>
</efe:SapeContext>

Однако если вы используете не только декларативную модель веб страницы, но так же сочетаете ее с частью кода, то для использования контекста вам понадобится несколько переработать код заполнения ваших элементов управления. Дело в том, что область видимости имен элементов сменится и станет принадлежать элементу SapeContext, а вам придется использовать метод FindControl для ссылки на объект. Рассмотрим на примере. Допустим у вас имеется страница следующего характера:

<body>
    <form runat="server">
        <asp:Label runat="server" Id="sampleLabel"/>
    </form>
</body>

И Code-behind файл примерно следующего содержания:

protected void Page_Load(object sender, EventArgs e)
{
    sampleLabel.Text = "some content";
}

Тогда при установке контекста страница примет следующий вид:

<body>
    <form runat="server">
        <efe:SapeContext runat="server" Id="sapeContext">
            <Content>
                <asp:Label runat="server" Id="sampleLabel"/>
            </Content>
        </efe:SapeContext>
    </form>
</body>

А Code-behind необходимо доработать, а именно перед ссылкой на элемент теперь нужно сначала используемую ссылку получить:

protected void Page_Load(object sender, EventArgs e)
{
    Label sampleLabel;
    sampleLabel = (Label)sapeContext.FindControl("sampleLabel");
    sampleLabel.Text = "some content";
}

 

Наверх


Установка кода на сайт с поддержкой ASP

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

2. Для успешной работы скрипта убедитесь, что в настройках IIS для Вашего сайта создан Application и в его настройках включена опция "Enable session state". 

3. Создайте директорию в каталоге, где находится Ваш сайт, дайте права юзеру IUSR_[имя_вашей_машины] на запись в этот каталог и разместите в нем файлы sapelinks.inc, sapeRaw.txt и sape.inc. 

4. В заголовке Вашего сайта сделайте include файла sapelinks.inc. 

5. В том месте, где Вы хотите видеть ссылки, сделайте include файла sape.inc. 

6. Настройки скрипта sapelinks.inc (переменные задаются в начале файла):

  • sapeUser — Ваш идентификатор пользователя

  • sapeHost — Ваш хост

  • sapeUrl — URL сайта SAPE

  • rawFileName — путь к файлу, в котором будет храниться serialized-строка содержащая ссылки

  • incFileName — путь к include-файлу со ссылками

  • updateTimeout — время обновления кэша ссылок (мин)

  • linksHeader — то, что будет выводиться перед ссылками

  • linksFooter — то, что будет выводиться после ссылок

 

Наверх


Помогла ли вам статья?