Вы не зашли.
Тема такая:
Нужно прикрутить сторонний каталог (линкоферма).
От каталога есть только один php файл, допустим katalog.php вот с таким кодом:
<?php ob_start(); // это 1 часть кода, обязательно поставьте ее в самое начало страницы!!! ?>
<title>Статьи</title>
<?php // Это 2 часть кода она может находится в удобном для вашего дизайна месте.
error_reporting(0);
$out_serv = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
$out_ua = $_SERVER["HTTP_USER_AGENT"];
echo file_get_contents("http://outlink.ru/include/pages.php?s_art=3755&u_art=3767&serv_art=".urlencode($out_serv)."&ua_art=".urlencode($out_ua));
$html = ob_get_clean();
function change_title($html) {
if (preg_match('#<index><h1[^>]*>(.+)</h1></index>#iS', $html, $matches))
if (preg_match('#<title[^>]*>(.+)</title>#iS', $html, $mtitle))
return str_replace($mtitle[0], '<title>'.strip_tags($matches[1]).'</title>', $html);
return $html;}
echo change_title($html);
?>
При заходе на страницу - _http://sait.ru/katalog.php должен быть такой же дизайн как и на сайте и виджеты должны быть рабочими.
В принципе как должно быть понятно:
1. создаю файл например index2.php с кодом как в index.php
2. создаю шаблон например main.katalog
3. изменяю в index2.php main на main.katalog
4. всавляю в main.katalog, в то место которое надо тег [katalog]
5. прописываю в index2.php после
$template['vars']['queries'] = $mysql -> qcnt();
$template['vars']['exectime'] = $timer -> stop();
приблизительно вот так:
include("katalog.php");
$poptopic3 = file_get_contents();
$template['vars']['katalog'] = $katalog = ob_get_clean();
Суть вопроса именно в пункте 5, как правильно прописать код?
То как я сделал работает криво. Поскольку мои познания в php "ноль" действовал методом "тыка".
Не в сети
А ты уверен, что хочешь работать с этим outlink'ом?
Тот вариант скрипта, который ты показал, представляет из себя огромнейшую дырку в безопасности.
В любой момент они могут сделать с твоим сайтом всё что угодно - начиная от банального показа собственных баннеров (около месяца назад на таком попался filepost - иногда вместо своих ссылок рекламировал какое-то тур. агенство, но они свои скрипты подключают через JScript, поэтому серверу навредить не могут) заканчивая утаскивание себе всех паролей и редактированием любых файлов у тебя на сайте.
Главное - чтобы было желание. Возможно - у outlink'а, а возможно - у тех, кто его взломает.
Не в сети
Виталь, здравствуй, на счет дырки я не знал, для меня это открытие...
Вообще, я просто эксперимент поставить хочу (насколько быстро мой сайт улетит в бан), и хостинг новый обкатать. Можно конечно другой линкатор попробовать, но мне outlink кажется самым лучшим в плане качества сайтов.
А если например файл katalog.php положить в папку например, как у сапы (типа: 2345676345465763547...) и уже отуда его выводить в index2.php? Ну или вообще как-то можно наладить безопасность?
Не в сети
Oleg, сорри. Был невнимателен.
Мне показалось, что они используют include, который очень опасен (а не неопасный в данной ситуации file_get_contents).
С "натягиванием" можно поступить проще - сделать маленький плагин, это будет тебе в качестве компенсации
Плагин без конфигуратора, поэтому процедура установки такова:
1. Ставишь плагин link_outlinks 0.00
2. В коде link_outlinks.php находишь текс
s_art=5881&u_art=5996
и меняешь его на свои значения из кода, которые показываются в панели управления твоим сайтом на outlink'е.
3. Открываешь основной .htaccess файл (т.е. в корне сайта) и добавляешь в конец:
RewriteRule ^topic/ ?action=plugin&plugin=link_outlink
RewriteRule ^topic/ento([0-9]*)/ ?action=plugin&plugin=link_outlink&ento=$1
RewriteRule ^topic/ent([0-9]*)/ ?action=plugin&plugin=link_outlink&ent=$1
4. В настройках сайта на outlink название странички меняешь на topic.php (если нужно другое имя, то в .htaccess'е надо писать именно его, но без расширения [b].php[/]b), и обязательно ставишь галочку в настройках статического отображения!
Если будут какие-то проблемы - обращайся
Не в сети
Здравствуй, Виталий. В общем, установил плагин "link_outlinks" и возник вопрос.
Каталог работает по адресу: _http://www.мой_сайт.ru/plugin/link_outlink/ - это так должно быть или я что-то не правильно понял?
Не в сети
http://www.мой_сайт.ru/?action=plugin&plugin=link_outlink или
http://www.мой_сайт.ru/topic/
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
http://www.мой_сайт.ru/?action=plugin&plugin=link_outlink - так работает, но outlink в <title> дает свои значения, а сейчас в <title> стоят значения движка "Название сайта : Плагин". С таким вариантом сайт не пройдет модерацию в outlink
http://www.мой_сайт.ru/topic/ - так не работает. Пишет "Информация: Категория не найдена!"
Галочка в настройках (на outlink) статического отображения стоит.
Изменено Oleg (2009-01-06 23:45:35)
Не в сети
Oleg, А ты в конец .htaccess добавил строчки?:
RewriteRule ^topic/ ?action=plugin&plugin=link_outlink
RewriteRule ^topic/ento([0-9]*)/ ?action=plugin&plugin=link_outlink&ento=$1
RewriteRule ^topic/ent([0-9]*)/ ?action=plugin&plugin=link_outlink&ent=$1
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
2Oleg:
1. Ты не переделывал .htaccess чтобы к категориям можно было обращаться не как к /category/ИМЯ_КАТЕГОРИИ/ а как к /ИМЯ_КАТЕГОРИИ/ ?
Если переделывал, то перенеси указанные строчки в место сразу после:
# Editable links
2. Я, вроде, правильно переделал код outlinks'а.
Они подставляют свой title, но не всегда, а когда выставляют специальный флаг.
Вот у меня аналогично - их title проставится только в случае, если они его передадут.
Попробуй проверить, если что не так - буду более детально разбираться.
3. Плагин должен быть доступен по адресу /topic/ - как и сделано в варианте, который выдаётся outlink'ом.
Не в сети
1. Да, переделывал, перенес под "# Editable links" помогло.
2. Сайт в Аутлинк добавил сегодня. На данный момент сайт на: "Сайт на модерации!".
Если зайти http://www.мой_сайт.ru/topic.php, то титлы аутлинка есть: <title>Статьи</title>.
Если зайти http://www.мой_сайт.ru/topic/, то титлы движка: <title>Название сайта : Плагин</title>, хотя по идее должно отображаться <title>Статьи</title>. Просмотрел HTML-код страницы http://www.мой_сайт.ru/topic/ (ну мало ли, может <title> аутлинка вылезли где-нибудь между <body>) никаких других title нет.
Не в сети
1. Хорошо
2. Значит outlink не генерирует собственный title при заходе по url'у /topic/
Все вопросы к ним,.. возможно так и задумывалось?
p.s. В настройках outlink'а ты указал, что у тебя так называемый "ЧПУ режим" (или .htaccess режим)?
Не в сети
Ну посмотрим, будет аутлинк на другие страницы каталога title генерировать или нет.
Мой сайт все еще на модерации висит, поэтому подожду на счет title-лов.
На счет "ЧПУ режим" галочка в настройках аутлинка стоит.
Не в сети
Еще такой вопрос:
у меня на главной странице стоит отдельный шаблон (main_gl.tpl) на всех остальных стандартный шаблон (main.tpl), url /topic/ выводит каталог в шаблоне главной страницы (main_gl.tpl), а мне надо чтобы выводил в стандартный шаблон (main.tpl), что нужно дописать в link_outlink.php???
Не в сети
Сегодня сайт прошел модерацию в аутлинке. Титлы (<title>) по адресу _http://мой_сайт/topic/ и внутри каталога по прежнему генерятся движком (Название сайта : Плагин), а не аутлинком.
С шаблоном разобрался, все шаблоны выводятся как надо.
Не в сети
Oleg, Если добавишь в код плагина после:
global $SYSTEM_FLAGS, $template;
вот это:
$SYSTEM_FLAGS['info']['title']['group'] = 'Название плагига';
То этому плагину сможешь задавать название, но оно уже будет постоянным.
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, спасибо, что поддерживаешь тему, но речь не о том, что ты предлагаешь.
Аутлинк генерирует свои собственные <title>-лы для каждой статьи. Вот они-то и не отображаются при выводе каталога аутлинка, а выводятся <title>-лы самого движка. Поэтому вариант, который ты предложил, не подходит.
Не в сети
Попробуй сделать так, после:
$SYSTEM_FLAGS['info']['title'] = array('group' => $matches[1]);
Добавить:
$SYSTEM_FLAGS['info']['title']['group'] = $matches[1];
Это скорее всего не правильно, но всё же попробуй так.;)
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
Oleg, я правильно понимаю, что ты хочешь выставлять свой заголовок даже в случае, когда outlinks не выдаёт заголовка?
В изначальной задаче такого не было
Замени:
// Замена заголовка (если требуется)
if (preg_match('#<index><h1[^>]*>(.+)</h1></index>#iS', $html, $matches))
$SYSTEM_FLAGS['info']['title'] = array('group' => $matches[1]);
на:
// Замена заголовка (если требуется)
if (preg_match('#<index><h1[^>]*>(.+)</h1></index>#iS', $html, $matches)) {
$SYSTEM_FLAGS['info']['title'] = array('group' => $matches[1]);
} else {
$SYSTEM_FLAGS['info']['title'] = array('group' => 'Каталог OutLINKS');
}
При необходимости можешь заменить текст [font=Courier]Каталог OutLINKS[/font] на нужный тебе.
Не в сети
Oleg, но это же проблема outlink'а, верно?
Или я чего-то недопонимаю?
Опиши детально проблему.
В том скрипте, который предоставляется outlink'ом, мы видим, что они делают подмену заголовков (title страницы) в случае, если этот заголовок приходит в спец-теге от outlink'а.
Т.е. логично предположить, что они эти заголовки выдают... во всяком случае тогда, когда считают это нужным.
Не в сети