Так как у меня есть несколько сайтов на движке wiki, а именно mediawiki, то я решил немного заработать на них с помощью биржи ссылок. Использовать будем биржу Sape. Аналогично можно подключить и Trustlink
Инструкция приведенная на форуме не помогла мне. Ссылки уходили в «error» на следующий день. Стал пробовать и нашел способ.
Будем изменять код движка, так что нужен к нему, например, по ftp.
Вначале скачиваем архив с сайта sape. Ссылка на скачивание дается, когда вы подключается сайт. Распаковываем и копируем в папку и файл в корень сайта. Название папки и файла — ваш уникальный id, который состоит из цифр и букв от a до f (hex-код или шестнадцатеричный). Не забываем, что на папку должны быть выставлены права 777.
Вначале, редактируем файл robots.txt, а точнее добавляем в него:
Disallow: *SpecialPages
Теперь займемся редактированием движка. Находим файл SpecialPage.php и ищем:
function setHeaders() { $out = $this->getOutput(); $out->setArticleRelated( false ); $out->setRobotPolicy( "noindex,nofollow" ); $out->setPageTitle( $this->getDescription() );
Вместо него записываем:
function setHeaders() { $out = $this->getOutput(); $out->setArticleRelated( false ); #$out->setRobotPolicy( "noindex,nofollow" ); $out->setPageTitle( $this->getDescription() );
Это нужно чтобы Sape могла определить все страницы через служебные.
Теперь занимаемся изменением темы. Для темы vector будем менять файл vector.php в папке skins:
Находим там такой код:
<!-- panel --> <div id="mw-panel" class="noprint"> <!-- logo --> <div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div> <!-- /logo --> <?php $this->renderPortals( $this->data['sidebar'] ); ?> </div> <!-- /panel -->
И вместо него записываем
<!-- panel --> <div id="mw-panel" class="noprint"> <!-- logo --> <div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div> <!-- /logo --> <?php $this->renderPortals( $this->data['sidebar'] ); ?> <!-- sape --> <div class="portal" id="p-tb"> <h5 tabindex="3">Реклама</h5> <div class="body"> <ul><?php echo $GLOBALS['sape_links']; ?> </ul> </div> </div> <!-- /sape --> </div> <!-- /panel -->
Но у меня с этой темой не сложилось. Та и у многих стоит тема MonoBook, так что в файле темы /skins/MonoBook.php, после:
<?php $sidebar = $this->data['sidebar']; if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true; if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true; if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true; foreach ($sidebar as $boxName => $cont) { if ( $boxName == 'SEARCH' ) { $this->searchBox(); } elseif ( $boxName == 'TOOLBOX' ) { $this->toolbox(); } elseif ( $boxName == 'LANGUAGES' ) { $this->languageBox(); } else { $this->customBox( $boxName, $cont ); } }
Перед
?>
Дописываем:
$this->customBox( 'реклама', $GLOBALS['sape_links'] );
Теперь дописываем настройки в LocalSettings.php:
# SAPE global $sape; global $GLOBALS; define('_SAPE_USER','код'); require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['host'] = 'сайт без http'; $o['charset'] = 'UTF-8'; $o['request_uri'] = $_GET['uri']; $o['request_uri'] = str_replace('%2F', '/', urlencode($o['request_uri']) ); $o['force_show_code'] = 'true'; $sape = new SAPE_client($o); unset($o); $sape_links = $sape->return_links(); $GLOBALS['sape_links'] = $sape_links;
Не забываем менять «код» в четвертой строчке на ваш. И все можно добавлять/индексировать сайт в sape.
Альтернативный вариант
Этот вариант подсказал один из комментаторов (ник Аноним), за что большое ему спасибо!
Добавить в LocalSettings.php:
# SAPE $wgNamespaceRobotPolicies = array( NS_SPECIAL => 'index,follow' ); $wgHooks['SkinBuildSidebar'][] = 'fnSape'; function fnSape($skin, &$bar) { define('_SAPE_USER', 'код SAPE'); require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['host'] = 'сайт без http'; $o['charset'] = 'UTF-8'; $o['request_uri'] = $_GET['uri']; $o['request_uri'] = str_replace('%2F', '/', urlencode($o['request_uri']) ); $o['force_show_code'] = 'true'; $sape = new SAPE_client($o); unset($o); $sape_links = $sape->return_links(); $bar['Реклама'] = $sape_links; return true; }
Не забываем поменять код Sape и адрес сайта.
Другой вариант кода:
# SAPE $wgSapeUserID = 'КОД SAPE'; $wgHooks['SkinBuildSidebar'][] = 'wfSape'; function wfSape($skin, &$bar) { global $IP, $wgServer, $wgSapeUserID; if ( $skin->getUser()->isLoggedIn() && $wgGoogleAdSenseAnonOnly ) { return $bar; } define('_SAPE_USER', $wgSapeUserID); require_once("$IP/$wgSapeUserID/sape.php"); $sape = new SAPE_client(array( 'host' => $wgServer, 'charset' => 'UTF-8' )); $out = $sape->return_links(); if (strstr($out, 'href') !== FALSE) { $out = '<ul><li>'.$out.'</li></ul>'; } $bar['Реклама'] = $out; return true; }
Спасибо, все работает 🙂 С вектор.пхп сейчас попробуй сделать…
Я пробовал с векторной темой, но ссылки уходили в Error иногда. Но возможно, что-то не так с настройками php.
В векторной теме вставка последней строчки вызывает ошибку:
Call to undefined method VectorTemplate::customBox()
Как поправить?
А вы дописывали в файл вывод skins/Vector.php?
У меня вначале поста идет изменение темы вектор, а потом темы monobook. У них немного по разному вывод идет.
Да. Но сделал это с небольшой ошибкой.
Ошибку поправил и сделал точно по инструкции, НО Sape не видит код и не хочет добавлять сайт.
PS на блоге проблема с комментированием. Если обновить страницу, форма комментариев становится неактивной. Приходится открывать в другом браузере.
На счет комментирования – видимо система кэширования подглючивает. Спасибо, что сказали. Буду искать в чем проблема.
Прошу прощения за мои кривые руки (или что там было виной).
Еще раз проделал все по инструкции и сапа увидела код.
Возможно, один какой-нибудь символ в начале или в конце не скопировался из-за чего и не работало.
У меня тоже были проблемы с установкой кодов сапы были. Сейчас выпадают иногда ошибки из-за редиректов (перенаправлений страниц).
$wgNamespaceRobotPolicies
. Добавить в sidebar можно при помощи хукаSkinBuildSidebar
(см. подробнее по ссылкеСпасибо за информацию, буду знать.
Вот что в итоге получилось:
Никаких правок файлов движка не потребовалось. Сайт успешно добавлен в систему.
Ссылки:
https://www.mediawiki.org/wiki/Manual:Hooks/SkinBuildSidebar
https://www.mediawiki.org/wiki/Manual:$wgDefaultRobotPolicy
https://www.mediawiki.org/wiki/User:Ancap#Как%20добавить%20код%20trustlink%20/%20sape%20в%20MediaWiki?
Спасибо, за информацию
Немного доработал код. В данный момент сайт, на котором размещён код, успешно работает в системе.
В настройках площадки:
Отображение > Разделитель ссылок >
;
Отображение > Ширина блока > 120px;
Добавить в
LocalSettings.php
: