DLE Seo и внутренняя оптимизация

Раздел: DataLife Engine » Полезные статьи для DLE
DLE Seo и внутренняя оптимизация

Представляем на http://www.dle9.com/ новую подборку статей и приемов для DLE Seo и внутренняя оптимизация. Здесь было собрано в кучку разные новые статьи и приемы для версии DataLife Engine 11.x по сео и внутренней оптимизации сайта.

людям помогать чинить сайты после всяких таких . Все описанное ниже паки и хаки используются лично и проверены автором на своем ресурсе
<a href="http://www.dle9.com/">дле</a>


Внимание! Выполнять установку следует поэтапно. Сделали первую вставку кода, проревели сайт, делайте другую вставку кода, обновляете страницу и т.д. Это поможет определить, где вы могли допустить ошибку, если сайт выдаст ошибку при добавления кода или изменения файла. Возвращаете обратно как было и ищите причину.

Статья состоит из 2 частей в которые входят пункты- DLE SEO и внутренняя оптимизация.

Спойлер: 1. Включаем кэш в браузерах посетителей

Как включить кэш в браузерах с помощью добавления кода в файл .htaccess для DLE? Частый вопрос который задают пользователи многих площадок. Этот полезный пак, позволяет существенно увеличить скорость загрузки страницы при пощение ее посетителями.

Тестирование хака происходило на загруженном портале большого числа скриптов и всевозможными наворотами в шаблоне, где в публикациях были напиханы тяжеловесными картинками.
Без включения кеша страница загружалась 1-2 секунды, после включения кегша страница загружается моментально.

Включаем кэш в браузерах посетителей. Установка:
Открываем .htaccess в корне сайта. Находим

RewriteEngine On


ниже вставляем

# Включаем кэш в браузерах посетителей
<ifModule />
    # Все html и htm файлы будут храниться в кэше браузера один день
    <FilesMatch>
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    # Все css, j&#097;vascript и текстовые файлы будут храниться в кэше браузера одну неделю
    <FilesMatch>
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    # Все флэш файлы и изображения будут храниться в кэше браузера один месяц
    <FilesMatch>
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    # Отключаем кеширование php и других служебных файлов
    <FilesMatch>
        Header unset Cache-Control
    </FilesMatch>
</IfModule>



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

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

Тут уже вам самим решать ставить хак или нет! Лично автор поставил к себе на портал
<a href="http://www.dle9.com/">www.dle9.com</a>

Открыть файл engine/engine.php

$where_category = "category = '{$get_cats}'";
                }
            }


После него вставить:

$db->query("SELECT id FROM ".PREFIX."_post WHERE {$where_category} AND approve=1" . $where_date);
            $ids = array();
            while($r = $db->get_row()) $ids[] = $r['id'];
            if(count($ids)) $ids = implode(',',$ids);
            else $ids = 0;
            $where_category = "id IN ($ids)";


Спойлер: 1. SEO оптимизация DLE фикс для категорий в спидбаре
Хак DLE предложил Олег Александрович a.k.a. Sander.
Многие SEO-специалисты утверждают, что для продвижения сайта плохо, когда страница сама на себя ссылается. В данном случаи решение касается, когда это происходит в спидбаре при просмотре категории.

Маленький фикс исправляет это дело.
Открыть файл engine/modules/functions.php
Найти строку:

function get_breadcrumbcategories($id, $separator="&raquo;") {


Заменить на:

function get_breadcrumbcategories($id, $separator="&raquo;",$rec=false) {


Тут же ниже найти строку:

$parent_id = $cat_info[$id]['parentid'];


После нее вставить:

    global $cstart, $dle_module;
    if($rec OR $cstart>1 OR $dle_module!='cat') $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";
    else $list = $cat_info[$id]['name'];
    if($parent_id){
        $parent = get_breadcrumbcategories($parent_id,$separator,true);
        if($parent) $list = $parent . " $separator " . $list;
    }
    return $list;


2. Убираем название сайта с title

Открываем /engine/engine.php, находим код :

$metatags['title'] = $nam_e . $page_extra . ' &raquo; ' . $metatags['title'];


Меняем на:

$metatags['title'] = $nam_e . $page_extra;


Далее ищем :

$metatags['title'] = $titl_e . $page_extra . ' &raquo; ' . $config['home_title'];


Меняем на :

$metatags['title'] = $titl_e . $page_extra;


Далее ищем код :

if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);


Меняем на:

if ($do == "cat" and $category != '' and $subaction == '') //если категория
{
    if($cat_info[$category_id]['metatitle'])
        $metatags['title'] = isset($page_extra) ? stripslashes($cat_info[$category_id]['metatitle']) . $page_extra : stripslashes($cat_info[$category_id]['metatitle']);
    elseif($metatags['header_title'])
        $metatags['title'] = isset($page_extra) ? stripslashes($metatags['header_title']) . $page_extra : stripslashes($metatags['header_title']);
    else
        $metatags['title'] = isset($page_extra) ? stripslashes($cat_info[$category_id]['name']) . $page_extra : stripslashes($cat_info[$category_id]['name']);
}
elseif ($dle_module == "main") //если главная страница
    $metatags['title'] = isset($page_extra) ? stripslashes($config['home_title']) . $page_extra : stripslashes($config['home_title']);
elseif ($metatags['header_title']) $metatags['title'] = stripslashes($metatags['header_title']);




Делаем обновление кода хлебные крошки по примеру от Google.

Открываем /engine/engine.php, находим :

if ($config['speedbar'] AND !$view_template ) {
    $s_navigation = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"{$config['http_home_url']}\" itemprop=\"url\"><span itemprop=\"title\">" . $config['short_title'] . "</span></a></span>";

    if( $config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = "";

    if (intval($category_id)) $s_navigation .= " {$config['speedbar_separator']} " . get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'] );
    elseif ($do == 'tags') {

        if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;
        else $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"?do=tags\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;

    } elseif ($nam_e) $s_navigation .= " {$config['speedbar_separator']} " . $nam_e;

    if ($titl_e) $s_navigation .= " {$config['speedbar_separator']} " . $titl_e;
    else {

        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){

            $page_extra = " {$config['speedbar_separator']} ".$lang['news_site']." ".intval($_GET['cstart']);

        } else $page_extra = '';

        $s_navigation .= $page_extra;
    }
    $tpl->load_template ( 'speedbar.tpl' );
    $tpl->set ( '{speedbar}', '<span id="dle-speedbar">' . stripslashes ( $s_navigation ) . '</span>' );
    $tpl->compile ( 'speedbar' );
    $tpl->clear ();


Меняем на :

if ($config['speedbar'] AND !$view_template ) {
    $s_navigation = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"{$config['http_home_url']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $config['short_title'] . "</span></a><meta property=\"position\" content=\"1\"></li>";
    if( $config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = "";
    if (intval($category_id))
    {
        $cat_breadcrumb = explode("|", get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'] ));
        $s_navigation .= " {$config['speedbar_separator']} " . $cat_breadcrumb[0];
    }
    elseif ($do == 'tags') {
        if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . "tags/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $lang['tag_cloud'] . "</span></a><meta property=\"position\" content=\"2\"></li> {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">" . $tag . "</span><meta property=\"position\" content=\"3\"></li>";
        else $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"?do=tags\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $lang['tag_cloud'] . "</span></a><meta property=\"position\" content=\"2\"></li> {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">" . $tag . "</span><meta property=\"position\" content=\"3\"></li>";

    } elseif ($nam_e)
    {
        if($dle_module == "showfull")
        {
            $cat_breadcrumb[1] = $cat_breadcrumb[1] + 1;
            $s_navigation .= " {$config['speedbar_separator']} " . "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$nam_e}</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>";
        }
        else
        {
            $s_navigation .= " {$config['speedbar_separator']} " . "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$nam_e}</span><meta property=\"position\" content=\"2\"></li>";
        }
    }
    if ($titl_e)
    {
        if(isset($cat_breadcrumb[1]) && !is_null($cat_breadcrumb[1]))
            $cat_breadcrumb[1] = $cat_breadcrumb[1] + 1;
        else
            $cat_breadcrumb[1] = 3;
        $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$titl_e}</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>";
    }
    else {

        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){
            $cat_breadcrumb[1]++;
            $page_extra = " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">".$lang['news_site']." ".intval($_GET['cstart']) . "</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>";

        } else $page_extra = '';
        $s_navigation .= $page_extra;
    }
    $tpl->load_template ( 'speedbar.tpl' );
    $tpl->set ( '{speedbar}', '<ol vocab="http://schema.org/" typeof="BreadcrumbList">' . stripslashes ( $s_navigation ) . '</ol>' );
    $tpl->compile ( 'speedbar' );
    $tpl->clear ();
}


Далее открываем /engine/modules/functions.php, находим :

function get_breadcrumbcategories($id, $separator="&raquo;") {

    global $cat_info, $config, $PHP_SELF;

    if( ! $id ) return;

    $parent_id = $cat_info[$id]['parentid'];

    if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";
    else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";

    while ( $parent_id ) {

        if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list;
        else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list;

        $parent_id = $cat_info[$parent_id]['parentid'];

        if($parent_id) {
            if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
        }
    }
    return $list;
}


Меняем на :

function get_breadcrumbcategories($id, $separator="&raquo;") {
    global $cat_info, $config, $PHP_SELF, $dle_module;
    if( ! $id ) return;
    $parent_id = $cat_info[$id]['parentid'];
    $first_id_p = $parent_id;
    $i = 1;
    while($parent_id)
    {
        $i++;
        $parent_id = $cat_info[$parent_id]['parentid'];
        if($parent_id)
            if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
    }

    $i += 1;
    $parent_id = $first_id_p;
    if($parent_id == 0)
    {
        $id_i = 2;
        if($dle_module == "cat")
        {
            if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"2\"></li>";
            else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"2\"></li>";
        }
        else
        {
            if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"2\"></li>";
            else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"2\"></li>";
        }
    }
    else
    {
        $id_i = 3;
        if($dle_module == "cat")
        {
            if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>";
            else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>";
        }
        else
        {
            if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"3\"></li>";
            else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"3\"></li>";
        }
    }
    while ( $parent_id ) {
        $i--;
        if($dle_module != "cat")
        {
            if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list;
            else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list;
        }
        else
        {
            if($id != $cat_info[$parent_id]['id'])
                $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a property=\"item\" typeof=\"WebPage\" href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list;
            else
                $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list;
        }
        $parent_id = $cat_info[$parent_id]['parentid'];
        if($parent_id) {
            if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
        }
    }
    return $list . "|" . $id_i;
}


Далее открываем .css файл который используется где и хлебные крошки и вставляем :

ol[typeof=BreadcrumbList]
{
    display:inline-block;
    list-style:none!important;
}
ol[typeof=BreadcrumbList] > li
{
    display:inline-block;
}


На этом всё! Скачать
  • 80
Рубрика: Все для DLE » Полезные статьи
Ранее » Акции и подарки хостинга BeGet на Новый 2017 год« Далее Разработка и создание сайтов под ключ
Добавление комментарияОставить комментарий