Старый 24.04.2008, 12:25   #11
Новичок
 
Регистрация: 19.07.2007
Сообщений: 3
Вес репутации: 0
mitriy на пути к лучшему
По умолчанию

Скачал код, установил.
Для замены текста использовал
Код:
$text = $sape_context->replace_in_text_segment($text);
Все работает, теперь ждем рекламодателей.
Кто скачал код немного раньше, обратите внимание на замечание выше
Цитата:
Реально параметр db_root_dir называется db_dir.
PS: немного не по теме. Когда удалял лишние страницы (на которых мне не нужны контекстные ссылки) случайно удалил и нужные. Теперь они не проявляются при попытке повторного поиска страниц с кодом. Что делать?
mitriy вне форума  
Старый 24.04.2008, 12:27   #12
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от Antuan Посмотреть сообщение
Есть вопросы. Много. Первый
Автор указывает, что Необходимо пользоваться инструкцией для Контента в РНР. Означает ли Это, что Контентный Код под ПЕРЛ надо вставлять ДО тэга < body > ?
Зависит от того, какую функцию Вы используете. Если replace_in_text_segment, то в неё Вы просто передаёте порции текста, в них модуль подставляет контекстные ссылки, если они есть, и возвращает изменённый текст. Как Вы потом собираете куски текста в код страницы - это известно только программисту конкретного движка. Это в PHP код (грубо говоря) "встраивается" в HTML, в Перле всё наоборот: скрипт на Перле отрабатывает и в течение выполнения делает вывод функцией print кода, собирая HTML-документ. Если используете функцию replace_in_page, то функцию нужно позвать после вывода HTTP-заголовков, но до вывода HTML кода.
Meneldor вне форума  
Старый 24.04.2008, 12:29   #13
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от mitriy Посмотреть сообщение
Теперь они не проявляются при попытке повторного поиска страниц с кодом. Что делать?
По этому поводу пишите на support@sape.ru, индексация страниц - это уже к ним.
Meneldor вне форума  
Старый 24.04.2008, 13:54   #14
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 208
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Цитата:
Сообщение от Meneldor Посмотреть сообщение

Заменить старый код вызова:
Код:
my $sape = new SAPE(...);
на новый:
Код:
my $sape = new SAPE::Client (...);
в связи с переименованием класса SAPE в SAPE::Client (старый формат вызова тоже поддерживается, однако будет отключен в будущем).
Означает ли Это, что для обычных ссылок
Это
Код:
 "$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE(
    user => '5кода8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;
Надо поменять на Это
Код:
"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Client (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;
Цитата:
Для использования контекстных ссылок необходимо сделать следующее.

Добавить код для создания объекта SAPE::Context с теми же параметрами, что передаются в конструктор SAPE::Client:
Код:
my $sape_context = new SAPE::Context (...);
Означает ли Это, что Код для Контекста будет выглядеть так:
Код:
"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Context (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;
Antuan вне форума  
Старый 24.04.2008, 15:01   #15
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от Antuan Посмотреть сообщение
Означает ли Это, что для обычных ссылок
Это
...
Надо поменять на Это
...
Точно! Только текст "<ИМЯ_ХОСТА>" нужно поменять на реальный хост - например, "mysite.ru" (без кавычек):
Код:
host => 'mysite.ru'
Цитата:
Сообщение от Antuan Посмотреть сообщение
Означает ли Это, что Код для Контекста будет выглядеть так:
Код:
"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Context (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;
А вот это неверно. SAPE::Client->get_links просто возвращает HTML-код со ссылками. Контекстные же ссылки должны подставляться в текст Вашего сайта, который Вы как-то должны передать модулю. И для этого есть три функции, их я описал в первом сообщении.

К сожалению, помогать ставить код на все площадки я не могу физически . Кто ставил движок на Ваш сайт? Возможно, у Вас есть знакомые Перл-программисты?
Meneldor вне форума  
Старый 24.04.2008, 15:47   #16
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 208
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

Цитата:
"<ИМЯ_ХОСТА>"
Прописано как положено: www.moi_sait.com
Цитата:
Кто ставил движок на Ваш сайт?
На свои 7 РНР-сайтов и 1 Перл-сайт Код ставил и ставлю сам

Пишу здесь подробные вопросы, потому что
01. Другим, может, поможет
02. Больше никто не пишет, хотя, наверняка сайтов 95 000: 10 = 9 500 шт в системе, наверняка, имеются. Неужели все удачно поставили?

03. Код для РНР ставят и новички. Поэтому хочется более подробного описания установки кода для контентных ссылок для ПЕРЛ

Ни в РНР, ни в ПЕРЛЕ программистом не являюсь, как и, думаю, 90% посетителей этого форума. Просто - ВэбМастер, каких много. ВэбМастер, готовый учиться и, научившись, помогать другим...
Antuan вне форума  
Старый 24.04.2008, 16:06   #17
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от Antuan Посмотреть сообщение
02. Больше никто не пишет, хотя, наверняка сайтов 95 000: 10 = 9 500 шт в системе, наверняка, имеются. Неужели все удачно поставили?
03. Код для РНР ставят и новички. Поэтому хочется более подробного описания установки кода для контентных ссылок для ПЕРЛ
Насчёт 2: мало кто успел попробовать, я думаю, да и перловых клиентов у САПЕ, насколько я понимаю, совсем немного. Что же касается 3, согласен, с PHP ситуация попроще, но Перл в принципе посложнее, отсюда и возникают такие проблемы... Один из основных принципов Перла - TIMTOWTDI (there is more than one way to do it), а потому вариантов установки кода - масса .

Давайте ещё раз. В каких участках кода Вашего сайта подготавливаются данные для вывода на страницу? Например, из базы данных извлекаются статьи, новости, сообщения форума и т.п., после этого они обычно подготавливаются к выводу (например, производится расстановка тегов и т.п.) и либо выводятся на экран функцией print, либо передаются в качестве параметра шаблонизатору:
Код:
# получение данных из базы (пример из доки к DBI)
my $emps = $dbh->selectall_arrayref(
    "SELECT ename FROM emp ORDER BY ename",
    { Slice => {} }
);
unless ($html_template) {
    # вывод на экран, если шаблонизатор НЕ используется:
    foreach my $emp (@$emps) {
        print "Employee: $emp->{ename}\n";
    }
} else {
    # ИЛИ передача в качестве параметра шаблонизатору - в данном примере это HTML::Template
    $template->param(emps => $emps);
}
Так вот самый простой способ использовать КС - это найти место, где данные извлекаются из базы данных, и добавить код для подстановки в эти данные КС:
Код:
# получение данных из базы (пример из доки к DBI)
my $emps = $dbh->selectall_arrayref(
    "SELECT ename, biography FROM emp ORDER BY ename",
    { Slice => {} }
);
# поиск и замена КС в поле biography для каждого сотрудника:
$sape_context->replace_in_text_segment(\$_->{description}) foreach @$emps;
После этого поле biography будет дополнено HTML-кодом с подставленными прямо в текст этого поля КС. Само собой, поля для добавления в них КС Вы выбираете сами в зависимости от конкретной схемы БД .

Вариант же с $sape_context->replace_in_page будет работать при скриптах такого вида:
Код:
# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;
# вывод HTML-документа
print "<html><body>Здесь будет тело документа, текст которого будет целиком проанализирован для расстановки в нём КС.</body></html>"
Или вот так:
Код:
# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;
# вывод HTML-документа
print "<html><body>Здесь будет тело документа, но только в <sape_index>этом блоке</sape_index> и ещё <sape_index>вот в этом блоке текста</sape_index> будут подставлены КС.</body></html>"
Повторюсь: вариантов масса. Я привёл лишь пару примеров, но возможно, что они добавят ясности.
Meneldor вне форума  
Старый 24.04.2008, 17:20   #18
Специалист
 
Регистрация: 19.07.2007
Адрес: Estonia
Сообщений: 223
Вес репутации: 208
Antuan скоро станет известенAntuan скоро станет известен
Отправить сообщение для Antuan с помощью ICQ
По умолчанию

В частности, движок на Файлах
При добавлении Кода в Хеадер перед print:
Цитата:
# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;
# вывод HTML-документа
print "<html><body>Здесь будет тело документа, текст которого будет целиком проанализирован для расстановки в нём КС.</body></html>"
У меня так:
Цитата:
print "Content-type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;

print qq~<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
Сайт не отображается: Белый чистый лист
Antuan вне форума  
Старый 24.04.2008, 17:32   #19
Специалист
 
Регистрация: 23.11.2006
Адрес: Москва
Сообщений: 121
Вес репутации: 214
Meneldor скоро станет известенMeneldor скоро станет известен
По умолчанию

Цитата:
Сообщение от Antuan Посмотреть сообщение
Сайт не отображается: Белый чистый лист
Боюсь, что такой диагностики недостаточно . Нужны хотя бы сообщения из логов, чтобы увидеть, что же пошло не так. Напишите мне по ICQ, плиз.
Meneldor вне форума  
Старый 25.04.2008, 11:59   #20
Специалист
 
Аватар для yarnik
 
Регистрация: 02.04.2008
Адрес: 10 минут до Майдана
Сообщений: 404
Вес репутации: 213
yarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордитсяyarnik - за этого человека можно гордится
Отправить сообщение для yarnik с помощью ICQ
По умолчанию

в старой версии, если тормозит сервер, то файл == 0
в связи с чем 2 вопроса:
1. почему не сделали в старой функцию if ($response eq "") { exit; }
2. реализовано ли оно в новой версии?
__________________
уже сбылось: редактирование фильтров, избранное для каждого проекта, возвращение Wink
yarnik вне форума  
Закрытая тема

Опции темы

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

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, время: 08:35.