n0lik 75 Опубликовано: 22 апреля 2008 Рассказать Опубликовано: 22 апреля 2008 Привет всем, подскажите пожалуйста, как реализовать контекстные ссылки c сапа на DLE, что то я совсем не въехал как это сделать. В случае, если вы желаете продавать «контекстные ссылки» со своей площадки, Вам необходимо выполнить ряд действий: 1) Для размещения контекстных ссылок на своем сайте, Вам в первую очередь потребуется обновить сервисный скрипт sape.php, скачать который можно в разделе «настройки» Вашей площадки. Внимание: Вам достаточно стереть старый файл sape.php и записать на его место новую версию. После обновления sape.php обязательно удалите файл links.db (новый создастся автоматически через некоторое время) и удостоверьтесь в том, что на папку с кодом выставлены права доступа 777. 2) Следующим этапом необходимо обновить код вызова ссылок на страницы сайта.Для вашего удобства мы реализовали 2 варианта размещения кода отображения контекстных ссылок: а) С использованием функции ob_get_contents() Особенности: - требует минимум усилий, для своего подключения - удобен, если на страницах Вашего сайта присутствует множество текстовых блоков, в которых вы планируете размещать ссылки - может не работать если на сайте используется gzip сжатие - код вызова ссылок на страницы должен размещаться в самом начале php-файла, до вывода тега body в результирующий html-документ. Последовательность действий: Для корректной индексации страниц системой и для правильного отображения ссылок, в исходном коде тех страниц, на которых вы планируете размещать контекстные ссылки, добавьте в самое начало (до вывода тега body в результирующий html-документ) следующий код <?php if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ваш_хеш_код'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape_context = new SAPE_context(); ob_start(array(&$sape_context,'replace_in_page')); ?> Важно: Если ранее у вас уже был установлен код для отображения обычных ссылок, то вам следует заменить в нем строчку кода кода: define('_SAPE_USER', 'ваш_хеш_код'); на if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ваш_хеш_код'); } Далее Вам необходимо заключить в теги <sape_index> ... </sape_index> текстовые фрагменты страницы, внутри которых Вы планируете размещать ссылки. Важно: данные теги будут автоматически вырезаться на этапе обработки и не будут никому видны, кроме нашего робота-индексатора. б) С использованием функции replace_in_text_segment() Особенности: - вариант работает путем непосредственной передачи текстового фрагмента в функцию replace_in_text_segment() , что позволяет отказаться от проставления тегов sape_index - удобен при использовании шаблонных движков Последовательность действий: Для корректной индексации страниц системой и для правильного отображения ссылок, в исходном коде тех страниц, на которых вы планируете размещать контекстные ссылки, добавьте в самое начало (до вывода тега body в результирующий html-документ) следующий код: <?php if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ваш_хеш_код'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape_context = new SAPE_context(); ?> Важно: Если ранее у вас уже был установлен код для отображения обычных ссылок, то вам следует заменить фрагмет кода: define('_SAPE_USER', 'ваш_хеш_код'); на if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ваш_хеш_код'); } Далее, перед выводом каждого фрагмента текста страницы, из которого Вы хотите продавать ссылки, необходимо предварительно обработать данный фрагмент функцией replace_in_text_segment. Пример: <? $text = 'В данном фрагменте текста страницы моего сайта я хочу продавать контекстные ссылки'; $text = $sape_context->replace_in_text_segment($text); echo $text; ?> Важно: функцию replace_in_text_segment нужно вызывать необходимое количество раз для каждого из отдельно расположенных на странице фрагментов текста, из которых Вы планируете продавать ссылки. Важно: инициализирующая php-вставка должна располагаться в php-файле выше первого вызова функции replace_in_text_segment. Важно: при использовании данного варианта кода вывода контекстных ссылок не требуется проставлять теги sape_index. Цитата Ссылка на сообщение Поделиться на других сайтах
Danila 8 Опубликовано: 22 апреля 2008 Рассказать Опубликовано: 22 апреля 2008 И обычные и контекстные: У меня продажа как обычных так и контекстных ссылок. Обычные разбиты на 3 блока. В index.php Перед сторокй $tpl->compile('main'); ставим if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ваш_страшный_длинный_код_sape'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['host'] = 'http://www.ваш_домен.ru'; $sape = new SAPE_client($o); $tpl->set('{links}', $sape->return_links(2)); $tpl->set('{links1}', $sape->return_links(2)); $tpl->set('{links2}', $sape->return_links()); В шаблон в места вывода ссылок ставим: В первое место: {links} во второе место {links1} в третье место {links2} В шаблоне fullstroy.tpl заменяем {full-story} на <sape_index>{full-story}</sape_index> Вуаля! (не знаю как по французски пишется ) Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 22 апреля 2008 Рассказать Опубликовано: 22 апреля 2008 Автор Спасибо огромное. Цитата Ссылка на сообщение Поделиться на других сайтах
Zdraff 4 Опубликовано: 23 апреля 2008 Рассказать Опубликовано: 23 апреля 2008 (изменено) А у меня вторым способом, который "С использованием функции replace_in_text_segment()". Стоял код обычных ссылок в index.php, я лишь добавил в modules/show.full.php перед строкой: $tpl->set('{title}', $metatags['title']); код с сайта SAPE: if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'МОЙ_КОД'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape_context = new SAPE_context(); $row['full_story'] = $sape_context->replace_in_text_segment($row['full_story']); Вот и все . Это будут ссылки появляться в тексте полной новости. Изменено 23 апреля 2008 пользователем Zdraff Цитата Ссылка на сообщение Поделиться на других сайтах
Danila 8 Опубликовано: 23 апреля 2008 Рассказать Опубликовано: 23 апреля 2008 А у меня вторым способом, который "С использованием функции replace_in_text_segment()". Стоял код обычных ссылок в index.php, я лишь добавил в modules/show.full.php перед строкой: $tpl->set('{title}', $metatags['title']); код с сайта SAPE: if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'МОЙ_КОД'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape_context = new SAPE_context(); $row['full_story'] = $sape_context->replace_in_text_segment($row['full_story']); Вот и все . Это будут ссылки появляться в тексте полной новости. А это <sape_index>{full-story}</sape_index> надо делать для такого способа отображения контекстных ссылок? Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 24 апреля 2008 Рассказать Опубликовано: 24 апреля 2008 Автор А у меня вторым способом, который "С использованием функции replace_in_text_segment()". Стоял код обычных ссылок в index.php, я лишь добавил в modules/show.full.php перед строкой: $tpl->set('{title}', $metatags['title']); код с сайта SAPE: if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'МОЙ_КОД'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape_context = new SAPE_context(); $row['full_story'] = $sape_context->replace_in_text_segment($row['full_story']); Вот и все . Это будут ссылки появляться в тексте полной новости. У меня вообще при таком раскладе ошибка вылетает Цитата Ссылка на сообщение Поделиться на других сайтах
Zdraff 4 Опубликовано: 24 апреля 2008 Рассказать Опубликовано: 24 апреля 2008 ты измени "МОЙ_КОД" на свой код Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 24 апреля 2008 Рассказать Опубликовано: 24 апреля 2008 Автор ты измени "МОЙ_КОД" на свой код Ну это то уж наверно я не прозивал Цитата Ссылка на сообщение Поделиться на других сайтах
Zdraff 4 Опубликовано: 24 апреля 2008 Рассказать Опубликовано: 24 апреля 2008 надо делать для такого способа отображения контекстных ссылок? Это второй ихний способ ты измени "МОЙ_КОД" на свой код Ну это то уж наверно я не прозивал Еще в index.php после: $tpl->load_template('main.tpl'); у меня висит код: # Показ ссылок SAPE if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'мой_код'); } require_once ROOT_DIR.'/'._SAPE_USER.'/sape.php'; $sape = new SAPE_client(); $tpl->set('{sape}', $sape->return_links()); # //Показ ссылок SAPE Цитата Ссылка на сообщение Поделиться на других сайтах
IRON MAIDEN 2 Опубликовано: 30 мая 2008 Рассказать Опубликовано: 30 мая 2008 добрый день! прошу помощи! может я туплю или просто не понимаю принципа работы САПЕ! версия 7 (с ЧПУ), перечитал все на форуме, попробовал все варианты кода - ссылки не выводятся! сделал так... залил нужную папку на сервер, поставил права... в индекс.пхп поставил код перед $tpl->compile('main'); if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'ххххххххххххххххххххх'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['host'] = 'sait.com'; $sape = new SAPE_client($o); $tpl->set('{sape_links}', $sape->return_links(10)); кстати, вопрос! $o['host'] = 'sait.com'; писать с http или без? встречал разные варианты В main.tpl вставил {sape_links} В результате ничего не выводится... просмотр хтмл-кода показывает на месте тега {sape_links} пустое место Еще такой момент... в админке САПЕ, в колонке ссылки стоит 0... может ссылки начнут появляться только тогда когда 0 поменяется на число? вариант с удалением links.db пробовал - не помогло Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 30 мая 2008 Рассказать Опубликовано: 30 мая 2008 Автор Еще такой момент... в админке САПЕ, в колонке ссылки стоит 0... может ссылки начнут появляться только тогда когда 0 поменяется на число? Ссылки появляются только когда их у вас купят. А не сразу после установки. Цитата Ссылка на сообщение Поделиться на других сайтах
IRON MAIDEN 2 Опубликовано: 30 мая 2008 Рассказать Опубликовано: 30 мая 2008 n0lik, т.е. у меня все сделано правильно? теперь мне просто ожидать покупки ссылок? Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 30 мая 2008 Рассказать Опубликовано: 30 мая 2008 Автор n0lik, т.е. у меня все сделано правильно? теперь мне просто ожидать покупки ссылок? Да конечно. Цитата Ссылка на сообщение Поделиться на других сайтах
IRON MAIDEN 2 Опубликовано: 30 мая 2008 Рассказать Опубликовано: 30 мая 2008 n0lik, спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
xsash 9 Опубликовано: 31 мая 2008 Рассказать Опубликовано: 31 мая 2008 только я рекомендовал бы в контекст загонять только полные новости, короткие тоже норм, но потом она уедет на друзуя страницу и уйдет в error Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 31 мая 2008 Рассказать Опубликовано: 31 мая 2008 Автор только я рекомендовал бы в контекст загонять только полные новости, короткие тоже норм, но потом она уедет на друзуя страницу и уйдет в error Это правильно подмечено. Цитата Ссылка на сообщение Поделиться на других сайтах
alexgolovin 0 Опубликовано: 31 мая 2008 Рассказать Опубликовано: 31 мая 2008 перепробовал все варианты - не получается Цитата Ссылка на сообщение Поделиться на других сайтах
alexgolovin 0 Опубликовано: 31 мая 2008 Рассказать Опубликовано: 31 мая 2008 Я понял почему не получалось как у Danila - у него всё нормально написано, главное нужно в index.php найдите строчку: echo $tpl->result['main']; и замените ее на eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php '); Все, вы можете использовать сторонние скрипты на вашем сайте. Данных хак не рекомендуется к использованию на версиях ниже 3.0 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.