Вопрос по сайту (площадке), который Вы намерены добавить в систему
Установка кода на сайт с поддержкой 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"; }