
Представляем на https://dle9.com/ новую подборку статей и приемов для DLE Seo и внутренняя оптимизация. Здесь было собрано в кучку разные новые статьи и приемы для версии DataLife Engine 11.x по сео и внутренней оптимизации сайта
Данные рекомендации подойдут для многих владельцев интернет площадок, однако если вам сложно понять для чего нужно делать все эти манипуляции и вам нужна квалифицированная помощь, то рекомендуем обратиться к профессионалам по SEO продвижению и оптимизации сайтов подробнее на этой странице. Сервис заинтересует жителей Киева и других городов Украины, которым нужно оперативно и качественно осуществить продвижение и раскрутку сайта.
Продвижение сайтов (SEO) - это сложный комплексный и поэтапный процесс, который затрагивает большое количество знаний в области HTML-верстки и структуры управления ресурса. Именно сео-специалисты с многолетним опытом работы смогут за короткий срок выявить ошибки и найти оптимальные решения, после изучения и анализа вашей интернет-деятельности.
Все описанное ниже паки и хаки используются лично и проверены автором на своем ресурсе.
Внимание! Выполнять установку следует поэтапно. Сделали первую вставку кода, проревели сайт, делайте другую вставку кода, обновляете страницу и т.д. Это поможет определить, где вы могли допустить ошибку, если сайт выдаст ошибку при добавления кода или изменения файла. Возвращаете обратно как было и ищите причину.
Спойлер: 1. Включаем кэш в браузерах посетителей
Как включить кэш в браузерах с помощью добавления кода в файл .htaccess для DLE? Частый вопрос который задают пользователи многих площадок. Этот полезный пак, позволяет существенно увеличить скорость загрузки страницы при пощение ее посетителями.
Тестирование хака происходило на загруженном портале большого числа скриптов и всевозможными наворотами в шаблоне, где в публикациях были напиханы тяжеловесными картинками.
Без включения кеша страница загружалась 1-2 секунды, после включения кегша страница загружается моментально.
Включаем кэш в браузерах посетителей. Установка:
Открываем .htaccess в корне сайта. Находим
RewriteEngine On
ниже вставляем
# Включаем кэш в браузерах посетителей
<ifModule />
# Все html и htm файлы будут храниться в кэше браузера один день
<FilesMatch>
Header set Cache-Control "max-age=43200"
</FilesMatch>
# Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю
<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 оптимизация запросов в БД для мультикатегорий будет полезно многим владельцам сайта у которых одна новость принадлежит нескольким категориям. По словам автора на посещаемой интернет площадке увеличится использование оперативной памяти, зато уменьшается время отклика, а скорость станет выше при формирование запроса.
Тут уже вам самим решать ставить хак или нет! Лично автор поставил к себе на портал
Открыть файл 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="»") {
Заменить на:
function get_breadcrumbcategories($id, $separator="»",$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 . ' » ' . $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);
Меняем на:
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="»") {
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&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&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="»") {
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&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&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&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;
}
На этом всё! Скачать
Seo-i-vnutrennyaya-optimizaciya-dle-podborka-statey-i-priemov.rar [31,68 Kb] (cкачиваний: 163)