1. Приветствую гостей и пользователей нашего форума! Первый раз вы у нас или же давно участвуете в жизни ресурса, хочу напомнить несколько моментов.

    1) Пользуемся поиском по форуму! Зачастую информация может находиться не по разделу!

    2) Раздел ИНФО-продуктов относительно новый, но имеем уже более 3000 высококлассных материалов (пользуемся сортировкой по прификсам).

    3) И самое важное, КАК КАЧАТЬ БЕЗ ОГРАНИЧЕНИЙ, вся информация находится по этой ссылке КУПИТЬ VIP

    4) Временная акция, получи +5 постов за вступление в нашу группу "Вконтакте" Более подробно ТУТ

    5) Веди активную жизнь на форуме и получай рубли на личный счёт!

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

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

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

Уроки SEO оптимизация DataLife Engine

Тема в разделе "Инструкции DLE", создана пользователем Sam Jack, 26 окт 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    13.755
    Симпатии:
    4.750
    В этой статье напишу код который позволит скрыть от индекса такие страницы как /page,1,2,1-post1.html ведь они дублируют контент.

    Открыть /engine/modules/show.full.php найти код:
    Код:
    $comments->build_navigation('navigation.tpl', $link_page . "{page}," . $news_name . ".html#comment", $user_query, $full_link);
    Ниже вставить:
    Код:
    if(intval( $_GET['news_page'] ) > 0) {
        $metatags['no_index'] = '<meta name=robots content=noindex,nofollow />';
    }
    Далее открыть /engine/engine.php найти код:
    Код:
    <meta name="keywords" content="{$metatags['keywords']}" />{$disable_index}
    Рядом вставить:
    Код:
    {$metatags['no_index']}
    Автор: Gameer
     
  2. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    13.755
    Симпатии:
    4.750
    Статья которая позволит Вам SEO оптимизировать движок DataLife Engine. Помимо этого вы найдете подробное описание об удалении ненужного функционала с движка. Статья была сложена с нескольких частей в одну и распространяется бесплатно. Мануал понятен даже новичкам

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

    Если же вы так и делаете, то вам придется подождать некоторое время от недели до месяца а то и больше что бы ваш сайт полностью стал соответствовать правкам да и в плане SEO тоже. Или же написать редиректы на нужные страницы.

    Автор статей : Gameer, так же материал был взят с alaev.info

    I. Удаление ненужных частей движка.

    Для начала будем удалять Календарь и Архивы. Зачем они нам, если на 99% сайтов DLE их никто не использует.
    1) Открываем /index.php, находим код и удаляем :
    $tpl->set ( '{calendar}', $tpl->result['calendar'] );
    $tpl->set ( '{archives}', $tpl->result['archive'] );

    2) Открываем файл /engine/init.php находим код и удаляем его :
    require_once ENGINE_DIR . '/modules/calendar.php';

    3) Заходим в /engine/modules и удаляем файл calendar.php. Ну вот и все, мы удалили календарь и архивы.
    Далее будем удалять вывод новостей "за весь год", "за весь месяц", "за день". Вот кто ими пользуется мне не понятно, да и суть не в том, хоть и это дубли которые можно просто скрыть от индекса, я считаю что лучше их просто удалить.
    1) Открываем файл /engine/engine.php, находим код и удаляем :
    Код:
    // ################ Новости за год #################
                if ($year != '' and $month == '' and $day == '') {
                    if ($cstart) {
                       
                        $cstart = $cstart - 1;
                        $cstart = $cstart * $config['news_number'];
                    }
    
                    $newsmodule = true;
                   
                    $url_page = $config['http_home_url'] . $year;
                    $user_query = "year=" . $year;
                   
                    if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                    if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                   
                    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-01-01'AND date < '{$year}-01-01' + INTERVAL 1 YEAR AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                    $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-01-01'AND date < '{$year}-01-01' + INTERVAL 1 YEAR AND approve=1" . $where_date;
                }
               
                // ################ Новости за месяц #################
                if ($year != '' and $month != '' and $day == '') {
                    if ($cstart) {
                        $cstart = $cstart - 1;
                        $cstart = $cstart * $config['news_number'];
                    }
    
                    if (intval($month) < 1 OR intval($month) > 12) {
                        header("HTTP/1.0 301 Moved Permanently");
                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/01/");
                        die("Redirect");
                    }
    
                    $newsmodule = true;
                    $url_page = $config['http_home_url'] . $year . "/" . $month;
                    $user_query = "year=" . $year . "&month=" . $month;
                   
                    if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                    if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                   
                    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                    $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date;
                }
           
                // ################ Новости за день #################
    
                if ($year != '' and $month != '' and $day != '' and $subaction == '') {
                    if ($cstart) {
                        $cstart = $cstart - 1;
                        $cstart = $cstart * $config['news_number'];
                    }
    
                    if (intval($month) < 1 OR intval($month) > 12) {
                        header("HTTP/1.0 301 Moved Permanently");
                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/01/");
                        die("Redirect");
                    }
    
                    if (intval($day) < 1 OR intval($day) > 31) {
                        header("HTTP/1.0 301 Moved Permanently");
                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/{$month}/01/");
                        die("Redirect");
                    }
    
                    $newsmodule = true;               
                    $url_page = $config['http_home_url'] . $year . "/" . $month . "/" . $day;
                    $user_query = "year=" . $year . "&month=" . $month . "&day=" . $day;
                   
                    if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                    if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                   
                    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                    $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND approve=1" . $where_date;
           
                }
    Далее в том же файле ищем код и удаляем его :
    Код:
    if ($month) $cache_prefix .= "month_" . $month;
                    if ($year) $cache_prefix .= "year_" . $year;
                    if ($day) $cache_prefix .= "day_" . $day;
    Далее ищем код и тоже его удаляем:
    Код:
    if ($year != '' and $month == '' and $day == '') $nam_e = $lang['title_date'] . ' ' . $year . ' ' . $lang['title_year'];
    if ($year != '' and $month != '' and $day == '') $nam_e = $lang['title_date'] . ' ' . $r[$month - 1] . ' ' . $year . ' ' . $lang['title_year1'];
    if ($year != '' and $month != '' and $day != '' and $subaction == '') $nam_e = $lang['title_date'] . ' ' . $day . '.' . $month . '.' . $year;
    2) Открываем файл /engine/init.php находим код и удаляем его:
    Код:
    if (isset ( $_GET['year'] )) $year = intval ( $_GET['year'] ); else $year = '';
    if (isset ( $_GET['month'] )) $month = @$db->safesql ( sprintf("%02d", intval ( $_GET['month'] ) ) ); else $month = '';
    if (isset ( $_GET['day'] )) $day = @$db->safesql ( sprintf("%02d", intval ( $_GET['day'] ) ) ); else $day = '';
    Далее ищем код :
    Код:
    if (!$newsid) $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where month(date) = '$month' AND year(date) = '$year' AND dayofmonth(date) = '$day' AND alt_name ='$news_name'" );
    else $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where  id = '$newsid' AND approve" );
    И заменяем на:
    Код:
    if ($newsid) $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where  id = '$newsid' AND approve" );
    3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :
    Код:
    # За день
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2&day=$3 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&day=$3&cstart=$4 [L]
    # За весь месяц
    RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&cstart=$3 [L]
    # Вывод за весь год
    RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L]
    RewriteRule ^([0-9]{4})/page/([0-9]+)(/?)+$ index.php?year=$1&cstart=$2 [L]
    Все теперь мы без этой не нужной функции.
    Так же будем удалять В«Вывод всех последних новостей". Для меня это тоже лишняя функция, которая не столь важна для движка.
    Открываем файл /engine/engine.php, находим код и удаляем его :
    Код:
    elseif ($do == 'lastnews') {
                // ################ Вывод всех последних новостей #################           
                if ($cstart) {
                    $cstart = $cstart - 1;
                    $cstart = $cstart * $config['news_number'];
                }
    
                $newsmodule = true;
               
                $url_page = $config['http_home_url'] . "lastnews";
                $user_query = "do=lastnews";
               
                if (isset ( $_SESSION['dle_sort_lastnews'] )) $news_sort_by = $_SESSION['dle_sort_lastnews'];
                else $news_sort_by = "date";
                if (isset ( $_SESSION['dle_direction_lastnews'] )) $news_direction_by = $_SESSION['dle_direction_lastnews'];
                else $news_direction_by = "DESC";
               
                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1" . $where_date;
           
            }
    Далее в этом же файле ищем код и удаляем его:
    Код:
    elseif ($do == "lastnews") {
    $cache_prefix = "_lastnews";
    }
    Ищем код и удаляем его :
    Код:
    elseif ($do == 'lastnews') $nam_e = $lang['last_news'];
    2) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :
    Код:
    # вывод всех последних новостей
    RewriteRule ^lastnews(/?)+$ index.php?do=lastnews [L]
    RewriteRule ^lastnews/page/([0-9]+)(/?)+$ index.php?do=lastnews&cstart=$1 [L]
    Удаляем так же В«Вывод всех новостей пользователя", ну что я могу еще добавить ? Не нужная функция, вот и все.
    1) Открываем файл /engine/engine.php, находим код и удаляем его :
    Код:
    elseif ($subaction == 'allnews') {
                // ################ Вывод всех новостей пользователя #################
                if ($cstart) {
                   
                    $cstart = $cstart - 1;
                    $cstart = $cstart * $config['news_number'];
               
                }
    
                $newsmodule = true;
               
                $url_page = $config['http_home_url'] . "user/" . urlencode ( $user ) . "/news";
                $user_query = "subaction=allnews&user=" . urlencode ( $user );
               
                if (isset ( $view_template ) and $view_template == "rss") {
                   
                    $sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name FROM " . PREFIX . "_post where {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY date DESC LIMIT 0," . $config['rss_number'];
               
                } else {
                   
                    if (isset ( $_SESSION['dle_sort_allnews'] )) $news_sort_by = $_SESSION['dle_sort_allnews'];
                    if (isset ( $_SESSION['dle_direction_allnews'] )) $news_direction_by = $_SESSION['dle_direction_allnews'];
                   
                    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                    $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date;
                }
               
                $allow_active_news = true;
           
            }
    Далее находим код и удаляем его :
    Код:
    elseif ($subaction == 'allnews') {
    $cache_prefix = "_allnews_". $user;
    }
    Далее ищем код и удаляем его :
    Код:
    elseif ($subaction == 'allnews') {
        $nam_e = $lang['show_user_news'] . ' ' . $user;
       
        if ($config['allow_alt_url'] == "yes") {
            $rss_url = $config['http_home_url'] . "user/" . urlencode ( $user ) . "/" . "rss.xml";
        } else {
            $rss_url = $config['http_home_url'] . "engine/rss.php?subaction=allnews&user=" . urlencode ( $user );
        }
    
    }
    2) Открываем файл /engine/modules/profile.php, находим код и удаляем его :
    Код:
    $tpl->set( '[rss]', "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/rss.xml" . "\" title=\"" . $lang['rss_user'] . "\">" );
    $tpl->set( '[/rss]', "</a>" );
    Далее ищем снизу же код и удаляем его :
    Код:
    $tpl->set( '[rss]', "<a href=\"engine/rss.php?subaction=allnews&user=" . urlencode( $row['name'] ) . "\" title=\"" . $lang['rss_user'] . "\">" );
    $tpl->set( '[/rss]', "</a>" );
    Далее ищем и удаляем :
    Код:
    $tpl->set_block( "'\\[rss\\](.*?)\\[/rss\\]'si", "" );
    3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :
    Код:
    RewriteRule ^user/([^/]*)/news(/?)+$ index.php?subaction=allnews&user=$1 [L]
    RewriteRule ^user/([^/]*)/news/page/([0-9]+)(/?)+$ index.php?subaction=allnews&user=$1&cstart=$2 [L]
    RewriteRule ^user/([^/]*)/news/rss.xml(/?)+$ engine/rss.php?subaction=allnews&user=$1 [L]
    Вот и все, еще минус одна не нужная функция.
    Удаление В«Вывод непрочитанных новостей". Совсем не нужная штука, которая не правильно работает.
    1) Открываем файл /engine/engine.php, находим код и удаляем его :
    Код:
    elseif ($subaction == 'newposts') {
                // ################ Вывод непрочитанных новостей #################
                if ($cstart) {
                    $cstart = $cstart - 1;
                    $cstart = $cstart * $config['news_number'];
                }
    
                $newsmodule = true;
               
                $url_page = $config['http_home_url'] . "newposts";
                $user_query = "subaction=newposts";
               
                $thistime = date ( "Y-m-d H:i:s", $_TIME );
               
                if (isset ( $_SESSION['member_lasttime'] )) {
                    $lasttime = date ( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
                } else {
                    $lasttime = date ( "Y-m-d H:i:s", (time () + ($config['date_adjust'] * 60) - (3600 * 4)) );
                }
               
                if (isset ( $_SESSION['dle_sort_newposts'] )) $news_sort_by = $_SESSION['dle_sort_newposts'];
                if (isset ( $_SESSION['dle_direction_newposts'] )) $news_direction_by = $_SESSION['dle_direction_newposts'];
               
                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND date between '$lasttime' and '$thistime' order by " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND date between '$lasttime' and '$thistime'";
               
                $config['allow_cache'] = false;
            }
    Далее находим код и удаляем тоже :
    Код:
    elseif ($subaction == 'newposts') $nam_e = $lang['title_new'];
    2) Открываем /engine/init.php находим код и удаляем :
    Код:
    $tpl->set( '{newposts-link}', $config['http_home_url'] . "newposts/" );
    и так же
    Код:
    $tpl->set( '{newposts-link}', $PHP_SELF . "?subaction=newposts" );
    3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :
    Код:
    # вывод непрочитанных статей
    RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L]
    RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L]
    Если ваш сайт не использует теги, то давайте и их удалим :
    1) Открываем файлы /engine/modules/show.short.php & show.full.php & show.costum.php находим код и удаляем :
    Код:
    if( $config['allow_tags'] and $row['tags'] ) {   
            $tpl->set( '[tags]', "" );
            $tpl->set( '[/tags]', "" );   
            $tags = array ();
            $row['tags'] = explode( ",", $row['tags'] );
            foreach ( $row['tags'] as $value ) {   
                $value = trim( $value );
        if( $config['allow_alt_url'] ) $tags[] = "<a href=\"" . $config['http_home_url'] . "tags/" . urlencode( $value ) . "/\">" . $value . "</a>";
        else $tags[] = "<a href=\"$PHP_SELF?do=tags&tag=" . urlencode( $value ) . "\">" . $value . "</a>";
        }
        $tpl->set( '{tags}', implode( ", ", $tags ) );
        } else {
        $tpl->set_block( "'\\[tags\\](.*?)\\[/tags\\]'si", "" );
        $tpl->set( '{tags}', "" );
        }
    2) Открываем /engine/engine.php, находим код и удаляем :
    Код:
    elseif ($do == 'tags') {
                // ################ Поиск новостей по тегу #################           
                if ($cstart) {
                    $cstart = $cstart - 1;
                    $cstart = $cstart * $config['news_number'];
                }
    
                $tag = urldecode ( $_GET['tag'] );
    
                if ( $config['charset'] == "windows-1251" AND $config['charset'] != detect_encoding($tag) ) {
                    $tag = iconv( "UTF-8", "windows-1251//IGNORE", $tag );
                }
    
                $tag = htmlspecialchars ( strip_tags ( stripslashes ( trim ( $tag ) ) ), ENT_COMPAT, $config['charset'] );
    
                define( 'CLOUDSTAG', $tag );
    
                $tag = @$db->safesql ( $tag );
    
                $url_page = $config['http_home_url'] . "tags/" . urlencode ( $tag );
                $user_query = "do=tags&tag=" . urlencode ( $tag );
           
                if (isset ( $_SESSION['dle_sort_tags'] )) $news_sort_by = $_SESSION['dle_sort_tags'];
                if (isset ( $_SESSION['dle_direction_tags'] )) $news_direction_by = $_SESSION['dle_direction_tags'];
               
                $db->query ( "SELECT news_id FROM " . PREFIX . "_tags WHERE tag='{$tag}'" );
               
                $tag_array = array ();
               
                while ( $row = $db->get_row () ) {
                   
                    $tag_array[] = $row['news_id'];
               
                }
               
                if (count ( $tag_array )) {
                   
                    $tag_array = "(" . implode ( ",", $tag_array ) . ")";
               
                } else {
                   
                    $tag_array = "('undefined')";
               
                }
               
                $db->free ();
               
                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}p.id IN {$tag_array} AND p.approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}id IN {$tag_array} AND approve=1" . $where_date;
                $allow_active_news = true;
               
                $tag_array = array ();
                unset ( $tag_array );
    
            }
    Потом в этом же файле находим (13 раз) и удаляем :
    Код:
    p.tags,
    Далее ищем код и удаляем :
    Код:
    elseif ($do == 'tags') {
    $cache_prefix = "_tagscl_". $tag;
    }
    Далее ищем и удаляем следующий код :
    Код:
    elseif ($do == 'alltags') $nam_e = $lang['tag_cloud'];
    elseif ($do == 'tags') $nam_e = stripslashes($tag);
    3) Открываем файл /engine/init.php, находим код и удаляем :
    Код:
    if( $do == "tags" AND !$_GET['tag'] ) $do = "alltags";
    4) Открываем файл /index.php, находим код и удаляем :
    Код:
    $tpl->set ( '{tags}', $tpl->result['tags_cloud'] );
    5) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :
    Код:
    # вывод отдельному тегу
    RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
    RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
    И тут оканчивается наше удаления частей с движка и начинается его оптимизация. Материал берется как с Alaev.info так и написан самостоятельно. И так приступим!

    II. SEO Оптимизация
    1) Уникализация метаописания description для страниц пагинации сайта
    Открываем /engine/engine.php, находим код :
    Код:
    if ( ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) OR (isset($_GET['news_page']) AND intval($_GET['news_page']) > 1) ){
    
        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['cstart']);
        else $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['news_page']);
    
    } else $page_extra = '';
    Меняем на :
    Код:
    if ( ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) OR (isset($_GET['news_page']) AND intval($_GET['news_page']) > 1) ){
    
        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) { $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['cstart']); $meta_ext_page = ' стр. ' .intval($_GET['cstart']);}
        else $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['news_page']);
    
    } else { $page_extra = ''; $meta_ext_page = ''; }
    Далее находим :
    Код:
    <meta name="description" content="{$metatags['description']}" />
    Меняем на:
    Код:
    <meta name="description" content="{$metatags['description']}{$meta_ext_page}" />
    2) Улучшение SEO характеристик заголовков title
    Открываем /engine/engine.php, находим код :
    Код:
    $metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];
    Меняем на:
    Код:
    $metatags['title'] = $nam_e . $page_extra;
    Далее ищем :
    Код:
    $metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];
    Меняем на :
    Код:
    $metatags['title'] = $titl_e . $page_extra;
    Далее ищем код :
    Код:
    if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);
    Меняем на:
    Код:
    //разные title для страниц пагинации, для первой полный title, для пагинации короткий
    if ($do == "cat" and $category != '' and $subaction == '') { //если категория
        if ( $metatags['header_title'] and ! $page_extra ) $metatags['title'] = stripslashes($metatags['header_title']);
        else $metatags['title'] = stripslashes($cat_info[$category_id]['name']) . $page_extra;
    } elseif ($dle_module == "main") { //если главная страница
        if ( ! $page_extra ) $metatags['title'] = stripslashes($config['home_title']);
        else $metatags['title'] = stripslashes($config['short_title']) . $page_extra;
    } elseif ($metatags['header_title']) $metatags['title'] = stripslashes($metatags['header_title']);
    //разные title для страниц пагинации, для первой полный title, для пагинации короткий
    3) Склейка зеркал. Главное зеркало www.site.ru или site.ru
    Открываем файл .htaccess что в главной директории (там где index.php), находим код и ниже него вставляем
    Код:
    RewriteEngine On
    А далее вставляем на выбор!
    1) Сайт будет открываться только по site.ru
    Код:
    # Определяем главное зеркало как site.ru (site.ru заменить на свой домен)
    RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
    2) Сайт будет открываться только по www.site.ru
    Код:
    #Определяем главное зеркало как www.site.ru (www.site.ru заменить на свой домен)
    RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
    RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
    4) Убираем index.php и index.html из адреса главной страницы
    Открываем файл .htaccess что в главной директории (там где index.php), и в самом низу вставляем :
    Код:
    # Редиректы с index.php или index.html на сайт
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/
    RewriteRule .* / [R=301,L]
    5) Склеиваем адреса страниц /page/1/ с основными адресами для главной страницы и категорий
    Открываем файл .htaccess что в главной директории (там где index.php), находим код :
    Код:
    # Редиректы
    RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]
    И выше вставляем :
    Код:
    # Редирект с первой страницы на основную
    RewriteBase /
    RewriteRule ^(.*)page/1(/|)$ $1 [R=301,L]
    6) Устраняем проблему с дублированием полной новости по разным адресам
    Открываем файл .htaccess что в главной директории (там где index.php), находим код :
    Код:
    # Сам пост
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 [L]
    
    RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
    RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
    RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
    RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]
    
    RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
    RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
    RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
    RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L]
    И заменяем на:
    Код:
    # Сам пост
    RewriteBase /
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*)\.(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*)\.(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*)\.(.*)$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)\.(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 [L]
    RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
    RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$2 [L]
    RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$2&newsid=$3 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)/([0-9]+)-(.*)$ index.php?newsid=$2 [L]
    RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
    RewriteRule ^page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$2&news_page=$1 [L]
    RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$1&newsid=$2 [L]
    RewriteRule ^([0-9]+)-(.*)$ index.php?newsid=$1 [L]
    Далее открываем файл /engine/modules/show.full.php, находим код :
    Код:
    if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
                            if ($_GET['seourl'] != $row['alt_name'] OR $_GET['seocat'] != $c_url OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false) {
                                if ($view_template == "print") {
                                    $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                    $re_url = reset ( $re_url );
                                } else {
                                    $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                    $re_url = reset ( $re_url );
                                }
                                header("HTTP/1.0 301 Moved Permanently");
                                header("Location: {$re_url}{$c_url}/{$row['id']}-{$row['alt_name']}.html");
                                die("Redirect");
                            }
                        }
    И удаляем!

    Далее ищем код и тоже удаляем его :
    Код:
    if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
                            if ($_GET['seourl'] != $row['alt_name'] OR $_GET['seocat'] OR $_GET['news_name'] OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) {
                                if ($view_template == "print") {
                                    $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                    $re_url = reset ( $re_url );
                                } else {
                                    $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                    $re_url = reset ( $re_url );
                                }
                                header("HTTP/1.0 301 Moved Permanently");
                                header("Location: {$re_url}{$row['id']}-{$row['alt_name']}.html");
                                die("Redirect");
                            }
                        }
    Далее ищем код и удаляем :
    Код:
    if ( $config['seo_control'] ) {
                        if ($_GET['newsid'] OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false) {
                            if ($view_template == "print") {
                                $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                $re_url = reset ( $re_url );
                            } else {
                                $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                $re_url = reset ( $re_url );
                            }
                            header("HTTP/1.0 301 Moved Permanently");
                            header("Location: {$re_url}".date( 'Y/m/d/', $row['date'] ).$row['alt_name'].".html");
                            die("Redirect");
                        }
                    }
    Далее находим код :
    Код:
    } else {
                $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
                $print_link = $config['http_home_url'] . "engine/print.php?newsid=" . $row['id'];
                $short_link = "";
                $link_page = "";
                $news_name = "";
    И выше вставляем :
    Код:
    //Правка неверных url
                $true_link = $config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1);
                if (intval($_REQUEST['cstart']) >= 2) $full_link = $link_page . intval($_REQUEST['cstart']) . "," . $news_name . ".html";
                elseif ($news_page >= 2) $full_link = $link_page . $news_name . ".html";
                if ($true_link != $full_link) {
                    header('HTTP/1.1 301 Moved Permanently');
                    header ('Location: ' . $full_link);
                    die();
                }
                //Правка неверных url
     
  3. Александр Просветов

    Регистрация:
    15 ноя 2015
    Сообщения:
    4
    Симпатии:
    2
    По теме, сео модули для DLE тык
     

Поделиться этой страницей

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...