Скрипт перелинковки страниц поисковыми запросами с выводом статичных блоков

Скрипт перелинковки страниц поисковыми запросами с выводом статичных блоковРубрика: Новости -> Скрипты -> php
Понедельник, 2 июля 2012 г.
Просмотров: 9120
Настроение: Спать хочу, но немогу заснуть
В колонках звучит: Crematory - black celebration
Подписаться на комментарии по RSS

Продолжение к теме перелинковки страниц ключевыми словами полученных из поисковых запросов.

В прошлой статье я привел скрипт который генерирует блоки ссылок налету

, каждый раз новый что не всем нравилось, а оно и понятно для того чтобы устойчиво держаться в поисковой выдаче нужны постоянные ссылки, которые не мог обеспечить скрипт.

Меня просили и в комментариях даже писали чтобы я доработал скрипт для генерации статических блоков ссылок, которые не будут меняться с обновлением страниц сайта, и естественно мне было вломы что то делать))), да и времени помоиму тогда небыло этим заниматься. Так вот на самом деле скрипт который может выводить статические блоки у меня уже давно был, просто я его потерял и думал что уже никогда не найду, но в один прекрасный момент, он неожиданно попался мне на глаза, и поэтому я его привожу здесь))), также прикреплю к посту файлы этого скрипта с примером.

И кстати самое что не удобное в этом скрипте, так это то что если вы захотите добавить ссылок, то блоки на всех страницах сгенерируются заного, а соответственно они изменятся полностью воот.

Сам генератор блоков ссылок, его нужно запускать вручную 1 раз))

<?php
$inpage=1; //размножить каждую ссылку на число страниц
//обьявляем файлы
$page_file=file("page.txt"); //страницы
$links_file=file("links.txt"); //ссылки
$fd=fopen("out.txt","a"); //выход
$outfile = join($fd, file('out.txt'));
$page_count_start=count($page_file);
$links_count_start=count($links_file);
$page_count=$page_count_start;
$j=0;
$b = array();
$i = array_rand ($links_file);
while($key!=1){
preg_match('!<a href="%28.*?%29">(.*?)</a>!si',$links_file[$i],$tmp[$i]);
$url=$tmp[$i][1];
$keywords=$tmp[$i][2]; 
if ($page_count>0){
echo' страницы есть 
';
$page_number=$page_file[$j];
//$j++;
$page_count=$page_count-1;
}else{
echo' закончились страницы, обходим их заного 
';
$j=0;
$page_count=$page_count_start;
$page_number=$page_file[$j];
//$j++;
$page_count=$page_count-1;
}
$page_out=trim($page_number).'~'.trim($url).'~%'.trim($keywords).'%';
$url_out=$url.'~%'.$keywords.'%';
$url_lost='~%%';
if(!stristr($url_out,$url_lost)){
if (stristr($outfile,$url_out)){echo' у нас повтор ссылки на страницах ';
echo' .. удаляем ссылку.. ';unset($links_file[$i]);
if($links_file<=$b){echo' упс все, ссылки закончились3 ';$key='1';}
else{echo' еще есть ссылки3 ';$i = array_rand ($links_file);}}else{
$page_out=trim($page_number).'~'.trim($url).'~%'.trim($keywords).'%';
fwrite($fd, $page_out."\r\n");
unset($links_file[$i]);
if($links_file>=$b){
$i = array_rand ($links_file);
$j++;
}}}else{$key='1';}}
fclose($fd); 
?>

Генератор блока ссылок, генерирует таким образом, чтобы в каждом боке по возможности небыло повторяющихся страниц акцепторов.

Сам скрипт который будет выводить блоки ссылок на страницах.

использовать так <?php include('generator_block_links.php')?> вставлять в том месте где планируется вывод блока с ссылками.

В этом скрипте предусмотренна предварительная шаблонизация блока и самих ссылок, т.е скрипт подключает к себе шаблоны по которым будет выводить ссылки - этими шаблонами являются файлы

tmpl_links_block.txt и tmpl_link.txt

<?php
$TheUrl = "http://".$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];     // вызванная страница
// считываем в массив файл со списком ссылок------------------------------------------------
// out.txt
// формат "урл откуда ссылка=урл куда ссылка=текст ссылки=текст блока вокруг ссылки
$arrLinkStrings = file(".linkshow/out.txt");
$arrOtkuda = array();
$arrKuda = array();
$arrTextWords = array();
$arrTextBlock = array();
foreach($arrLinkStrings as $strString) {
    //list($arrOtkuda[],$arrKuda[],$arrTextWords[],$arrTextBlock[]) = split("~",$strString);
    list($arrOtkuda[],$arrKuda[],$TextBlock) = split("~",$strString);
    $arrTextBlock[]=str_replace("%", "", $TextBlock);
    list($do,$arrTextWords[],$posle) = split("%",$TextBlock);
}
// считываем шаблон вывода блока ссылок
// tmpl_links_block.txt
$tmplLinksBlock = file_get_contents('.linkshow/tmpl_links_block.txt');
// считываем шаблон вывода одной ссылки
// tmpl_link.txt
$tmplLink = file_get_contents('.linkshow/tmpl_link.txt');
// ищем в массиве урл страницы, на которой мы находимся--------------------------------------------
$strLinks = "";
for($i = 0; $i <= (count($arrOtkuda)-1); $i++) {
    $arrOtkuda[$i]=trim($arrOtkuda[$i]);
    $arrKuda[$i]=trim($arrKuda[$i]);
    $arrTextWords[$i]=trim($arrTextWords[$i]);
    $arrTextBlock[$i]=trim($arrTextBlock[$i]);
        
    if ($TheUrl==$arrOtkuda[$i] OR $TheUrl==$arrOtkuda[$i]."index.html" OR $TheUrl."index.html"==$arrOtkuda[$i]) {
        $strLink = "<a href="%22%20.%20$arrKuda[$i]%20.%20%22" target="_blank" class="mylinks">" . $arrTextWords[$i] . "</a>";
        if( strlen( $arrTextBlock[$i]) > 1) {
            // если текстовый блок не пустой
            $strLink = str_replace($arrTextWords[$i], $strLink, $arrTextBlock[$i]);
        }
        $strLink = str_replace("-item-", $strLink, $tmplLink);
        $strLinks = $strLinks . $strLink;
    }
}
// отдаем список ссылок
$strLinks = str_replace("-items-", $strLinks, $tmplLinksBlock);
echo($strLinks);
?>

Как и писал прикрепляю сам скрипт linkator_keblor.ru_.zip 1649

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 29

  1. Здравствуйте, не могли бы вы пошагово объяснить как установить скрипт на сайт, вот я закачал папку с файлами скрипта на сервер, а дальше что? как вывести блок ссылок на страницах сайта?

  2. Добрый день, я ведь написал как его использовать "использовать так <?php include('generator_block_links.php')?> вставлять в том месте где планируется вывод блока с ссылками."

    Т.е откройде шаблон вашего сайта и найдите место где у вас выводится сайдбар, внутрь этого блока вставьте <?php include('generator_block_links.php')?>

  3. К сожалению в шаблон моего движка php код кажется не вставить, там все в блоках [component][/component], для вставки html кодов есть специальные виджеты, а вот для php кодов не предусмотрено...downer

  4. я предпологаю что файл шаблона парсится php скриптом, вставляя на место этих блоков какие либо определенные данные.

    Попробуй найти часть кода отвечающего за вирджеты, посмотри исходный код страницы сайта и сравнивай ее с файлом шаблона. Как найдешь, просто попробуй вставить код который я приводил выше, или ниже конструкции [][/], или выше и посмотри что получится. Будут ошибки сыпаться, знач чето не так, если будет выводиться текст но не в том месте, то методом тыка подбирай где тебе выводить его нужно.

  5. Вобщем ХЗ но ставлю всё как положено но не ошибок и не линков тож нет. В чём беда?

  6. А ты уверен что в том файле разместил код?

    Проверь может у тебя пустые файлы с линками, еще может

    echo($strLinks);
    не прописал.

    Проверь у тебя в файле .htaccess нет ли записи похожей на

    php_value error_reporting 1
    если есть убери ее на время - этот код устанавливает уровень выводимых сообщений об ошибках, я непомню точно какой вообще запрещает вывод, еще глянь в том файле где разместил код скрипта что то похожее.

  7. если вы захотите добавить ссылок, то блоки на всех страницах сгенерируются заного, а соответственно они изменятся полностью воот.

    Возник вопрос, новые ссылки добавятся в блоки или все блоки будут обновлены. Возраст ссылки (связки донор-акцептор) имеет большое значение, поэтому вопрос очень актуальны)

  8. Честно не помню как работает скрипт))), смотрю по коду и вижу что вроде бы генератор добавляет новые ссылки в блоки не удаляя старых, только перед добавлением новых, нужно удалить из файлов page.txt и links.txt старые данные и записать туда новые.

  9. За скрипт спасибо. Ссылки можно добавлять, как вы и написали)

    Только вот одна проблемаgrin на joomla 1.7 не работает (((

  10. Скрипт будет работать независимо от типа движка сайта, я писал выше что проверить надо, у кого то не отображалось ничего.

    Еще как вариант проблемы это то, что некоторые CMS кешируют страницы и шаблоны целиком, и может у тебя именно тот случай, попробуй очистить кеш, если это позволяет joomla.

  11. TruLander, после инклюденга кода

    <div id="gkFooterNav">
                      <jdoc include type="modules" name="footer_nav"  echo $this->module_styles['footer_nav']; ?>" />
                </div>
       <?php include('/linkator_keblor/generator_block_links.php')?>

    сайт "ложиться".

  12. Алексей, если удалить строку инклуда скрипта все работает нормально? Просто не могу понять во второй строке не хватает <? или <?php, может из за этого?

    <jdoc include type="modules" name="footer_nav" <b><?</b> echo $this->module_styles['footer_nav']; ?>" />

    И что ты подразумеваешь под тем что сайт ложиться? ошибки выводит, или ничего не отображает? если ошибки, то напиши какие, если ничего не отображается возможно тоже ошибки, но их вывод заблокирован(чтобы не пугать посетителей), обычно сервер сам создает log файлы ошибок, в директории вместе с файлом у которого возникла ошибка. поищи его там)).

  13. у вас в комментах стоит защита от вызова php

    <? php
    . в исходном коде есть

    в логи выпадает

    [Sat Dec 22 09:18:18 2012] [error] [client 141.101.98.133] PHP Warning:  include(): Failed opening '/linkator_keblor/generator_block_links.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/www/katolik.ru/httpdocs/subdomains/mobile/httpdocs/templates/gk_twn2/layouts/blocks/footer.php on line 14
  14. Вот по ошибке видно что он не может открыть файл скрипта, видимо до него адрес указан не правильно.

    попробуй указать адрес по другому, вместо

    <?php include('/linkator_keblor/generator_block_links.php')?>

    укажи

    <?php include('./linkator_keblor/generator_block_links.php')?>

    если у тебя скрипт лежит на директорию выше от вызываемого им скрипта, то нужно писать

    <?php include('../linkator_keblor/generator_block_links.php')?>

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

    <?php include('generator_block_links.php')?>

    И кстати попробуй выставить права на все файлы скрипта 777 может тоже в этом дело.

  15. С подключение разобрался grin

    но так и не вывело, вот, что делал

    1. подправил адреса вызова файлов

    (".linkshow/out.txt");

    на

    ("out.txt");

    2. прописал права 777, хотя для out.txt ставил их с самого начала, файлик не обновлялся. Может это добавьте это в инструкцию?

    3. в out.txt добавил url скрипта (generator_block_links.php) и вызвал его браузере напрямую. Скрипт отработал и вывел ссылки.

    НО очень интересно: каждую ссылку вывел столько раз сколько указано в файле tmpl_link.txt переменная -item-. Сократил -item- до одной.

    4. смотрел принтом, что содержит каждая функция из файла generator_block_links - все нормально и массив и шаблоны. Проверял совпадает ли адрес в браузере и адрес страницы raspberry

    .$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']

    После всех этих манипуляций, так и не удалось отобразить в шаблоне джумлы. Кеширование проверял - нету.

    Понимаю, что очень странная ситуация) т.к. ничего вроде сложного в скрепте нету, определяем страницу проверяем адрес в массиве, разбираем массив и выводим данные) но все же так не работает

  16. Блин я чесн не пойму в чем может быть проблема, если прямым вызовом все работает нормально, а после вставки в шаблон не выводит ничего. И кстати все правильно в шаблоне tmpl_link.txt должна быть одна строка))).

    Слушай попробуй вставлять этот код в другие файлы шаблона, в разные места, просто для теста.

    У меня бывало что я не знал какой файл отвечает за вывод в определенных местах сайта, то я просто брал и вставлял текст вида ########## 11111111111 ############ и искал в исходном коде страницы, и если этого не отображалось, то соответственно был не тот файл т.е искал методом исключения.

  17. Вопрос по скрипту.

    Файл (generator_block_links.php) выводит ссылки на страницу проблем нет когда в таблице (out.txt) есть записи.

    Файл (generator_out_file.php) при запуске что должен делать?

    Как заполняются таблицы (links.txt) (page.txt) (out.txt)

    Делал так, очистил все таблицы и запустил файл (generator_out_file.php)

    Ничего не произошло все таблицы остались пустыми, как их наполнить?

  18. Ну в общем скрипт заработал (частично), пришлось кое что изменить.

    но ссылки выдает только если адрес страницы

    http://www.sait/6.html

    а если адрес страницы

    http://www.sait/1/3.html

    то выдает ошибку и не показывает ссылки.

    Как бы поправить что-то в файле generator_block_links.php

  19. Piter, из названия файла должно же быть понятно, что файл generator_out_file.php генерирует выходной файл, а выходным файлом является какрас out.txt, в архиве со скриптом файлы заполнены демонстрационной информацией, скачай заново и посмотри как там все должно быть, а еще вот тебе ссылка на первый пост этого скрипта http://www.keblog.ru/page/skript-perelinkovki-stranic-poiskovymi-zaprosami .

    Tester, странно все это, у меня на рабочем сайте стоит скрипт, там все ок, с любым видом ссылок, какие ошибки хоть пишет - приведи пример.

  20. 2013-01-20 в 21:00:10 | Аноним

    Все вроде разобрался со скриптом.

    Ошибки были такие.

    1. В файле generator_block_links.php надо было прописывать путь ко всем файлам в виде: "/www/designba/www/htdocs/linkator/out.txt" т.е. полный путь.

    2. В скрипте отсутствует парсер сайта поэтому файлы links.txt и page.txt надо предварительно наполнить страницами и ссылками на свой сайт, что не очень удобно если сайт наполняется автоматически.

    3. Строка вывода ссылок у меня получилось такой:

  21. скрипт какой есть))), модифицировать его конечно можно, но заниматься я этим не оч хочу)))). а чтоб код вывести в сообщении, его надо было обрамить в тег < pre >, кнопкой "код"

  22. 2013-01-20 в 23:08:48 | Аноним

    Спасибо за разъяснение.

    3. Строка вывода ссылок у меня получилось такой:

    <?php include ("/www/designba/www/htdocs/linkator/generator_block_links.php")?>
  23. 2013-01-30 в 14:10:03 | Аноним

    Спасибо автору за работу. Полезная вещь для продвижения. Если можно ссылку на работающий пример. Заранее Благодарю.

  24. Незачто)))), а вот ссылкой не поделюсь)))LOL, не хочу ничего палить, не обижайся.

  25. А можно похожий скрипт сделать для ручного сайта на html ? понятно что все функции php поддерживаются.

  26. Юрий, этот скрипт подходит для всех сайтов которые расположены на серверах(хостингах) поддерживающих PHP.

    В твоем случае, если страницы сайта с расширением .html, то по умолчанию эти файлы не обрабатываются интерпретатором PHP, нужно либо менять расширение файлов с .html на .php, либо в настройках сервера прописывать к исполняемым расширениям html документы. Других возможностей не знаю))

  27. Ок. Буду разбираться

  28. Ок. У меня php, но имена файлов tmpl_links_block.txt и tmpl_link.txt сбили с толку. попробую разобраться

  29. Юрий, эти файлы используются самим скриптом, в них находятся шаблоны выводов ссылок.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

(войти без комментирования)

Имя и сайт используются только при регистрации

Если указать email (зарегистрироваться), то будет уведомление о новых комментариях.

Выберите человечка с поднятой рукой!