Старый 21.04.2008, 12:54   #1
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 150
Meneldor скоро станет известенMeneldor скоро станет известен
Thumbs up Контекстные ссылки в движках на Perl - тестируем модуль!

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

Для обновления модуля необходимо произвести следующие операции.
  1. Заменить старый SAPE.pm на новый (приаттачен к этому сообщению).
  2. Заменить старый код вызова:
    Код:
    my $sape = new SAPE(...);
    на новый:
    Код:
    my $sape = new SAPE::Client (...);
    в связи с переименованием класса SAPE в SAPE::Client (старый формат вызова тоже поддерживается, однако будет отключен в будущем).
  3. Если при вызове new SAPE раньше передавался параметр uri, следует заменить имя параметра на request_uri.

Для использования контекстных ссылок необходимо сделать следующее.
  1. Добавить код для создания объекта SAPE::Context с теми же параметрами, что передаются в конструктор SAPE::Client:
    Код:
    my $sape_context = new SAPE::Context (...);
  2. Для замены контекстных ссылок в определённом фрагменте текста следует вызывать функцию replace_in_text_segment, передавая в качестве параметра функции ссылку на скаляр с текстом (лучше для экономии памяти, замена будет произведена прямо в тексте по ссылке) или просто скаляр с текстом (в этом случае текст с заменой будет возвращён в качестве результата вызова функции):
    Код:
    $sape_context->replace_in_text_segment(\$text);
    или
    Код:
    $text = $sape_context->replace_in_text_segment($text);
  3. Для замены контекстных ссылок внутри вручную расставленных в нём тегов <sape_index> ... </sape_index> или целиком внутри тега <body> ... </body>, если блоков <sape_index> ... </sape_index> в документе нет, следует вызывать одну из этих функций:
    1. replace_in_page - устанавливает перехватчик вызовов к стандартной функции print, сделана по аналогии с replace_in_page в модуле для PHP, однако с ограничениями: не работает в mod_perl, может не работать в FastCGI, выводит полученный текст только при окончании работы скрипта, а не порциями, - поэтому я лично этот метод не рекомендую, он реализован лишь для совместимости с модулем на PHP:
      Код:
      $sape_context->replace_in_page;
    2. replace_in_page_text - работает совершенно аналогично replace_in_page, однако делает замену не в тексте, который передаётся при вызовах к print, а в том тексте, который Вы передаёте в качестве параметра функции, - причём аналогично replace_in_text_segment (ссылка на скаляр или просто скаляр):
      Код:
      $sape_context->replace_in_page_text(\$text);
      или
      Код:
      $text = $sape_context->replace_in_page_text($text);
      Разница между функциями replace_in_text_segment и replace_in_page_text в том, что в первую передают куски текста, установка контекстных ссылок в которых делается целиком, а во вторую передаётся целиком HTML-документ с (опционально) блоками <sape_index> ... </sape_index>.

А вообще - читайте документацию на модуль SAPE для PHP, все параметры и функции в новом модуле SAPE для Perl теперь именуются так же, так что смело пользуйтесь параметрами verbose, multi_site (кстати, а вот и он!) и т.п.

Пожалуйста, обо всех проблемах сообщайте в этом топике, а ещё лучше - по аське 23057061.

Последний раз редактировалось Mysterious Stranger; 10.07.2014 в 17:35.
Meneldor вне форума  
Старый 21.04.2008, 14:48   #2
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 144
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Привет!

У меня есть Сайт на ПЕРЛ. Давно жду контекстный ссылок...
Что-то сложновато описано... Что, где меняем...
Будем пробовать (если получится...) - Дело-то хорошее...
Antuan вне форума  
Старый 21.04.2008, 14:52   #3
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 150
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от Antuan Посмотреть сообщение
Что-то сложновато описано... Что, где меняем...
Неужели сложно? Текста много, согласен, но ведь всё просто . Если есть конкретные вопросы, задавайте, буду отвечать.
Meneldor вне форума  
Старый 21.04.2008, 15:46   #4
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 144
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Всё, вроде, сделал (не уверен, что верно - проверю)
Но куда вписывать это?
Цитата:
$text = $sape_context->replace_in_page_text($text);
Antuan вне форума  
Старый 21.04.2008, 16:08   #5
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 150
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Код:
$text = $sape_context->replace_in_page_text($text);
Вставляет контекстные ссылки в текст, который лежит в переменной $text. Реальное использование зависит от Вашего конкретного случая. У Вас может быть какая-нибудь переменная $result, или $html, или ещё как, тогда нужно указывать её.
Meneldor вне форума  
Старый 21.04.2008, 17:00   #6
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 144
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Для меня Это сложно...
Подожду, кто ещё поставит и расскажет
Antuan вне форума  
Старый 23.04.2008, 22:36   #7
Специалист
 
Регистрация: 03.05.2007
Сообщений: 189
Вес репутации: 0
antsv может только надеяться на улучшение
По умолчанию

Meneldor, всё ok. Поставил - работает. Спасибо.

Единственное, что бросилось в глаза:
# db_root_dir => (необязательно) директория для файлов данных, по умолчанию: $ENV{DOCUMENT_ROOT}/<user>

Реально параметр db_root_dir называется db_dir.
antsv вне форума  
Старый 24.04.2008, 00:00   #8
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 150
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от antsv Посмотреть сообщение
Реально параметр db_root_dir называется db_dir.
И правда - упустил! Спасибо, исправлю!
Meneldor вне форума  
Старый 24.04.2008, 03:16   #9
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 144
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Ещё помучился часов 5 методом тыка... Не получилось... Не находит Код на страницах
Хорошо бы на примере описать или То же самое другими словами...

Сейчас появилось объявление об этом Коде. Надеюсь народ подтянется и вместе решим свои проблемы... Для Информации: мой движок - Web-APP
Antuan вне форума  
Старый 24.04.2008, 10:45   #10
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 144
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Есть вопросы. Много. Первый
Автор указывает, что Необходимо пользоваться инструкцией для Контента в РНР. Означает ли Это, что Контентный Код под ПЕРЛ надо вставлять ДО тэга < body > ?
Antuan вне форума  
Закрытая тема

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модуль для кипа Pikasso_40 Курилка 4 22.07.2008 02:04
Новый сервис для текстов. тестируем. Mendel Курилка 35 22.06.2008 22:45
Новый поиск от Яндекса. Тестируем? Александр Блохин Яндекс 18 16.04.2008 13:27
Самый лучший модуль для ссылок mbmarket Деловое сотрудничество 6 31.01.2008 20:09
Распределение ссылок на движках Manager Вопросы по работе системы 11 03.10.2007 15:54


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