- Зачем это? Уже ж есть всякие паки-каки.
- Я заманался людям помогать чинить сайты после всяких таких паков. Все описанное ниже я использую лично у себя и проверял на себе. Не пишу от фонаря как некоторые.
Статья будет делиться на 2 части - SEO и внутренняя оптимизация, и делиться по пунктам.
Внутренняя оптимизация:
Включив кэш в браузерах посетителей скорость загрузки страницы существенно увеличится.
Тестировал на загруженном всякими скриптами и всевозможными наворотами шаблоне + напихал тяжеловесных картинок.
До проделанной манипуляции страница загружалась 1-2 секунды, после она загружается моментально.
Открываем .htaccess в корне сайта. Находим
ниже вставляем
Тестировал на загруженном всякими скриптами и всевозможными наворотами шаблоне + напихал тяжеловесных картинок.
До проделанной манипуляции страница загружалась 1-2 секунды, после она загружается моментально.
Открываем .htaccess в корне сайта. Находим
PHP:
RewriteEngine On
ниже вставляем
PHP:
# Включаем кэш в браузерах посетителей
<ifModule mod_headers.c>
# Все html и htm файлы будут храниться в кэше браузера один день
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
# Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# Все флэш файлы и изображения будут храниться в кэше браузера один месяц
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
# Отключаем кеширование php и других служебных файлов
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
Будет полезно тем, у кого одна новость пренадлежит нескольким категориям.
Хак был разработан Олегом Александровичем a.k.a. Sander.
По утверждению автора на посещаемом сайте увеличится потребление оперативной памяти, зато уменьшается время отклика, увеличивается скорость формирования запроса.
По этому сами решайте ставить этот хак или нет! Лично я поставил его себе.
Открыть файл engine/engine.php
Найти код:
После него вставить:
Хак был разработан Олегом Александровичем a.k.a. Sander.
По утверждению автора на посещаемом сайте увеличится потребление оперативной памяти, зато уменьшается время отклика, увеличивается скорость формирования запроса.
По этому сами решайте ставить этот хак или нет! Лично я поставил его себе.
Открыть файл engine/engine.php
Найти код:
PHP:
$where_category = "category = '{$get_cats}'";
}
}
PHP:
$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)";
SEO оптимизация DLE
Хак был разработан Олегом Александровичем a.k.a. Sander.
Говорят, что для СЕО плохо, когда страница ссылается сама на себя. А именно это происходит в спидбаре при просмотре категории.
Данный фикс исправляет это дело.
Открыть файл engine/modules/functions.php
Найти строку:
Заменить на:
Тут же ниже найти строку:
После нее вставить:
Говорят, что для СЕО плохо, когда страница ссылается сама на себя. А именно это происходит в спидбаре при просмотре категории.
Данный фикс исправляет это дело.
Открыть файл engine/modules/functions.php
Найти строку:
PHP:
function get_breadcrumbcategories($id, $separator="»") {
Заменить на:
PHP:
function get_breadcrumbcategories($id, $separator="»",$rec=false) {
Тут же ниже найти строку:
PHP:
$parent_id = $cat_info[$id]['parentid'];
После нее вставить:
PHP:
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;
Автор АлаичЪ и Gameer
Открываем /engine/engine.php, находим код :
Меняем на:
Далее ищем :
Меняем на :
Далее ищем код :
Меняем на:
Открываем /engine/engine.php, находим код :
PHP:
$metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];
PHP:
$metatags['title'] = $nam_e . $page_extra;
PHP:
$metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];
PHP:
$metatags['title'] = $titl_e . $page_extra;
PHP:
if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);
PHP:
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']);
Автор Gameer
Открываем /engine/engine.php, находим :
Меняем на :
Далее открываем /engine/modules/functions.php, находим :
Меняем на :
Далее открываем .css файл который используется где и хлебные крошки и вставляем :
Открываем /engine/engine.php, находим :
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 ();
}
PHP:
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, находим :
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;
}
PHP:
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 файл который используется где и хлебные крошки и вставляем :
PHP:
ol[typeof=BreadcrumbList]
{
display:inline-block;
list-style:none!important;
}
ol[typeof=BreadcrumbList] > li
{
display:inline-block;
}
5. Ставим микро-разметку под твиттер
6. Ставим микро-разметку schema для google
В этом пункте мы преобразуем title и добавим в него ключи. Что туда добавлять решайте сами, я же опишу вам как это делается.
Открываем /engine/modules/show.full.php и ищем в нем
меняем на
Допустим вы хотите задать title в зависимости от категории, для фильмов один, для сериалов другой, для анонсов или трейлеров третий. Тогда добавим проверку на категорию. Для этого
заменяем на
Не забудьте проставить свои категории id
Открываем /engine/modules/show.full.php и ищем в нем
PHP:
$metatags['title'] = $row['title'];
PHP:
$metatags['title'] = "Смотреть онлайн " . $row['title'] . " бесплатно в HD";
PHP:
$metatags['title'] = $row['title'];
PHP:
if ($category_id == 5 OR $category_id == 6) $metatags['title'] = "Смотреть онлайн фильм " . $row['title'] . " бесплатно в HD";
elseif ($category_id == 1 OR $category_id == 2 OR $category_id == 3 OR $category_id == 4) $metatags['title'] = "Смотреть онлайн сериал " . $row['title'] . " бесплатно в HD";
else $metatags['title'] = "Смотреть онлайн трейлер " . $row['title'] . " бесплатно в HD";
или (одно из двух)
9. Делаем ссылку на полную новость вида сайт.ру/категория/id/чпу-новости/
Внимание пункты 8 и 9 - выбераем что-то одно из двух, либо можно оставить все как есть с коробки dle, + в том что можно добавить ключи прямо в ссылку, используя эти пунты
10. Добавляем мета-тег canonical для ссылки на полную новость (важно)
11. Aggregaterating для dle - микроразметка для рейтинга новости
Каждый может предложить свои варианты, я протестирую и добавлю в статью, если все работает
Последнее редактирование:



