Хак перелинковка страниц

Тема в разделе "DLE", создана пользователем B1rdEX, 25 ноя 2008.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    Заказ начальства..

    PHP:
    <?php
    // (c) B1rdEX
    error_reportingE_ALL );

    $dbhost 'localhost';
    $dbuser 'babulek_dle';
    $dbpass '1234';
    $dbname 'babulek_dle';

    mysql_connect$dbhost$dbuser$dbpass ) or die ( 'connect error' );
    mysql_select_db$dbname ) or die ( 'sel_db error' );

    mysql_query'set names cp1251' );

    $innerWords = array ( // words to make inner replaces
        // just word, e.g. 'hello'
        
    'прибыль',
        
    'выручка',
        
    'представитель',
    );

    $outerWords = array ( // words to make outer replaces
        // word and href, e.g. 'hello' => 'goodbye.com'
        
    'деньги' => 'http://babulek.net',
        
    'стоимость' => 'http://babulek.net',
    );


    $q mysql_query"select id, full_story from dle_post" );
    if ( 
    $q && mysql_num_rows$q ) ) {
        
        
    $outerReplaced $innerReplaced = array( );
        
        while ( 
    $r mysql_fetch_assoc$q ) ) {
            
    $i 0;

            
    $chek strlen$r['full_story'] );
            
            foreach ( 
    $outerWords as $ancor => $href ) {
                if ( 
    stripos$r['full_story'], $ancor ) !== false ) {
                    
                    
    // 1 is a limit for replaces
                    
    $r['full_story'] = preg_replace"#(\s|,|\.)($ancor)(\s|,|\.)#i""$1<a href='$href'>$2</a>$3"$r['full_story'], 1$c );
                
                    if ( 
    $c ) {
                        
    $outerReplaced[] = $r['id'];
                        if ( ++
    $i == ) break; // make only 1 word-to-link replacement
                    
    }
                }
            }
            
            
    $i 0;
            foreach ( 
    $innerWords as $ancor ) {
                if ( 
    stripos$r['full_story'], $ancor ) !== false ) {
                    
    $sq mysql_query"select id, alt_name from dle_post where match (title, short_story, full_story, xfields) against ('{$ancor}') and id != '{$r['id']}' limit 1" );
                    if ( 
    $sq && mysql_num_rows$sq ) ) {
                        
    $sr mysql_fetch_assoc$sq );
                        
                        
    // 1 below is a limit for replaces
                        
    $r['full_story'] = preg_replace"#(\s|,|\.)($ancor)(\s|,|\.)#i""$1<a href='/{$sr['id']}-{$sr['alt_name']}.html'>$2</a>$3"$r['full_story'], 1$c );
                        
                        if ( 
    $c ) {
                            
    $innerReplaced[] = $r['id'];        
                            if ( ++
    $i == ) break; // make only 1 word-to-link replacement
                        
    }
                    }
                }
            }
            
            if ( 
    $chek !== strlen$r['full_story'] ) ) {
                
    $r['full_story'] = mysql_real_escape_string$r['full_story'] );
                
    mysql_query"update dle_post set full_story = '{$r['full_story']}' where id = '{$r['id']}' limit 1" ) or die( mysql_error( ) );
            }
        }
        
        echo 
    'Inserted outer links: ' count$outerReplaced ) . '<br>
            Id`s: ' 
    join', '$outerReplaced ) . '<br>';
        echo 
    'Inserted inner links: ' count$innerReplaced ) . '<br>
            Id`s: ' 
    join', '$innerReplaced ) . '<br>';
        
    } else {
        echo 
    'wtf? no records in db.';
    }
     
    sk8er, kwin и masteruka нравится это.
  2. Inferno1203

    Inferno1203 Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    73
    Симпатии:
    2
    Ага, поподробней))
    Какие методы использует мод? Полезна ли ваша система перелинковки?)) Какой эффект(а может аффект?)) оказывает она на поисковики?
     
  3. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    поподробней..

    есть 2 списка слов. 1 - для вставки внутренних ссылок, 2 - для вставки внешних ссылок.

    скрипт проходит по базе и заменяет слова на ссылки (количество указывается в скрипте) 2 методами:
    1) по первому списку (внутренние ссылки). берется слово, ищется наиболее релевантная публикация, вставляется ссылка
    2) по второму списку (внешние). берется слово, заменяется на ссылку.

    какое влияние - хз
    эффект - хз

    В теории:
    1) повышение внутренней ссылочной массы и ранжирования (возможно даже pr, если залинкуется pr'нутая страница)
    2) повышение пузомерок других сайтов (если ваш сайт их имеет)
    Да и как бэ.. перегон трафа внутри сайта
     
    masteruka нравится это.
  4. s2s

    s2s

    Регистр.:
    27 июл 2007
    Сообщения:
    245
    Симпатии:
    103
    Есть возможность отменить действия скрипта? или только бэкап?
     
  5. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    Ну скрипт для отмены не писал.. Хотя, в принципе, можно написать. Будет то же самое, только убирающее ссылки.

    Лучше, конечно же бэкап - и быстрее, и надежней :)
     
  6. hischnick

    hischnick

    Регистр.:
    18 янв 2008
    Сообщения:
    162
    Симпатии:
    14
    НО, было бы отлично еще сделать изложенный ТС скрипт в виде мода/хака, что бы можно было гибко управлять с админки, отменять действия и тд.

    Могу изложить несколько алгоритмов работы, сам его я не сделаю, в PHP слабоват. Кто может и есть желание - сообщите
     
  7. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
    Если кому надо - занимайтесь, код GNU/GPL..

    ps. Аватар и стиль написания знаком. Сайтэкс?
     
  8. warezzz

    warezzz Писатель

    Регистр.:
    9 фев 2007
    Сообщения:
    39
    Симпатии:
    1
    а чем эта перелинковка отличается от перелинковки облака тегов?
     
  9. B1rdEX

    B1rdEX Постоялец

    Регистр.:
    30 июн 2008
    Сообщения:
    141
    Симпатии:
    26
  10. FORMAT

    FORMAT

    Регистр.:
    9 май 2008
    Сообщения:
    210
    Симпатии:
    45
    если бы была замена слов в тексте ссылкой на тег, если он есть в базе, было бы круче...
     
Статус темы:
Закрыта.