FAQ

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

 

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

  • Скачайте к себе на компьютер соответствующий архив в zip со страницы добавления площадки.
  • Скопируйте файл SAPE.DLL из архива в подпапку сайта /Bin/ (если указанной папки нет, то создайте ее).
  • Убедитесь что у пользователя, под аккаунтом которого запускается приложение, имеется доступ на запись к папке /App_Data/ приложения.
  • Откройте файл 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="c55bf3fc219b9610c2b8abde2d8ed171">
   <DefaultDocuments>
<add Name="Default.aspx" />
   </DefaultDocuments>
</SapeConfig>
</effetto.Sape>

 

 

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

 

<efe:SapeLinks runat="server"/>

 

 
Внимание! Среда Visual Studio может автоматически вставить ID контролу со словом SapeLinks, - обязательно удалите его.
(опционально) Фрагмент страницы, в котором вы хотите отображать контекстые ссылки поместите внутри следующей конструкции:
 
<efe:SapeContext runat="server">
<Content>
  Фрагмент страницы под контекст
</Content>
</efe:SapeContext>

 

 

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

 

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

 

<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" />
 
Ввиду особенностей контекстных ссылок возможно размещение любого числа блоков размещения контекстных ссылок на странице, при этом не требуется указания дополнительных параметров.
 
 
3. Детальная настройка системы, подробное описание параметров
 
 
Максимально возможный раздел конфигурирования системы в файле конфигурации web.config выглядит следующим образом.
 
<effetto.Sape>
<SapeConfig UserId="c55bf3fc219b9610c2b8abde2d8ed171"
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 или любые другие, принятые вашей системой на сайте.
 

 

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

Помимо общей настройки через 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"/>

 

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

 

 
Компоненты модели системы размещения ссылок могут использоваться как декларативно (описано выше), так и непосредственно на языке программирования, как показано в текущей главе. Обратите внимение, что непосредственно не может быть создан объект настройки страницы. Использование объектов не может заменить конфигурирования системы через файл 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;