Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как вставить rel="next" и rel="prev" в head на страницах пагинации?

Как вставить rel="next" и rel="prev" в head на страницах пагинации?


     04.09.2015    Общие вопросы по PHP    1256

вопрос
Здравствуйте!

Необходимо на страницах пагинации в head вставить теги rel="next" и rel="prev" кроме первой страницы. Кто уже делал подобное? И как такое можно осуществить?

Заранее спасибо!

Ответил: ПафНутиЙ


Вам поможет прочтение документации, а конкретно тег
page-count
и его противоположный тег
not-page-count

Комментарии пользователей (25)

revived
23 | 6

revived - 4 сентября 2015 17:04 - Юзер

page-count и not-page-count не подходит в моем случае.. как я ими в теги <head></head> вставлю rel="next" и rel="prev"?

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 4 сентября 2015 17:06 - Админ

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

Каков вопрос - таков и ответ. Просто помните об этом.

revived
23 | 6

revived - 4 сентября 2015 17:39 - Юзер

Хех, ну я туплю, я думал эти теги не работают в head :)
Еще тогда очередной вопрос, а как сделать так, чтобы автоматом подставляло номер страницы (назад/вперед), например:

<link rel="prev"  href="http://site.com/page1.html">
<link rel="next" href="http://site.com/page3.html">


На сайте много разделов и статей почти 1700, нужно как-то генерировать адрес ссылки с разделом и номером страницы.

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 17:55 - Эксперт

Открыть /engine/engine.php Найти :
if ($canonical) {
Выше вставить :
if($dle_module == "main" OR $dle_module == "cat")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    
    if($cstart < 2)
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
        $prev_rel = '';
    }
    else
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 18:02 - Юзер

Все супер, но есть маленькая недоработка!
Если всего 6 страниц, то в последней странице стоит ссылка <link rel="next" href="http://site.com/page7.html">
Нужно убрать отображение в последней странице rel="next"

И еще, в /lastnews/ - они не отображаются, только в конкретном разделе.

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 18:23 - Эксперт

Заменить тот код что кидал на этот :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    if($cstart < 2)
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
        $prev_rel = '';
    }
    else
    {
        if($all_pages_count < $cstart)
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
        else
            $next_rel = '';
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML
{$prev_rel}
{$next_rel}
HTML;

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 18:27 - Юзер

Опять немного не так. Пропал тег rel="prev" везде...

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 18:30 - Эксперт

revived, На этот заменить :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    if($cstart < 2)
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
        $prev_rel = '';
    }
    else
    {
        if($cstart >= $all_pages_count)
            $next_rel = '';
        else
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 18:38 - Юзер

Близко но опять не в точку :)
На пагинации все новости - все ок, но вот теперь в разделах на пагинации пропал rel="next"

И на главной странице висит гег <link rel="next" href="http://мойсайт.ru/page/2">

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 18:50 - Эксперт

revived, на этот код :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    if($cstart < 2)
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
        $prev_rel = '';
    }
    else
    {
        if($cstart >= $all_pages_count)
            $next_rel = '';
        else
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
                
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:01 - Юзер

На главной висит тег: <link rel="next" href="http://сайт.ru/page/2">

Далее странная ситуация (смотрю пагинацию по категориям):

1. На первой странице все ОК - есть только rel="next"
2. На 2-5 странице НЕТ rel="next" !
3. На 6 странице (и всех остальных) уже все отлично, есть оба тега: rel="next" и rel="prev"
4. Далее все ОК, и последняя страница, она только rel="prev" имеет.

На пагинации по lastnews такая же ситуация: НЕТ rel="next" на 2-5 странице.

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 19:04 - Эксперт


revived, либо почистите кэш, либо вы не можете установить банальщину

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:09 - Юзер

Да... извините за тупость, хотя пару раз чистил кэш, а последний раз не зачистил.

Единственная проблема - на главной висит <link rel="next" href="http://tutknow.ru/page/2">

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 19:15 - Эксперт

revived, а что разве не должен ? Это ведь необходимо.

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:16 - Юзер

В моем случае не должен, дело в том что у меня вывод главной страницы через тег {custom}

Там фиксированное количество новостей - нет пагинации.

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 19:20 - Эксперт

revived, тогда замените на это :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    $next_rel = '';
    $prev_rel = '';
    if($cstart >= 2)
    {
        if($cstart >= $all_pages_count)
            $next_rel = '';
        else
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
        
        if($dle_module == "main")
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
        
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

для благодарностей за потраченное время, не откажусь от пива на webmoney
R118095764291 - рубли
U218134219019 - гривны
Z228640084773 - доллары

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:28 - Юзер

Блин, уже стыдно писать :) С главной пропали теги, а вот в пагинации разделов опять у меня бардак - на первой странице нет, на 5 показывает ссылку - <link rel="prev" href="..../page/39">
:(

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 19:39 - Эксперт

revived, на этот код :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    $next_rel = '';
    $prev_rel = '';
    if($cstart >= 2)
    {
        if($cstart >= $all_pages_count)
            $next_rel = '';
        else
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
                
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

и почистите кэш

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:51 - Юзер

Это самый отличный вариант, единственное у меня нет теперь тега rel="next" на первой странице категории и последних новостей. Ну хоть хорошо что на главной его уже нет!

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 19:55 - Эксперт

revived, на этот код замените :
if($dle_module == "main" OR $dle_module == "cat" OR $dle_module == "lastnews")
{
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    if(!$cat_cat AND $dle_module == "lastnews")
        $cat_cat = "lastnews/";
    
    $all_pages_count = @ceil( $count_all / $config['news_number'] );
    $next_rel = '';
    $prev_rel = '';
    if($cstart >= 2)
    {
        if($cstart >= $all_pages_count)
            $next_rel = '';
        else
            $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart + 1) .'">';
                
        if($cstart == 2)
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstart - 1) .'">';
    }
    elseif (($dle_module == "cat" OR $dle_module == "lastnews") AND $cstart < 2)
    {
        $next_rel = '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
    }
}
$metatags .=<<<HTML

{$prev_rel}
{$next_rel}
HTML;

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 20:02 - Юзер

ВебМани проверил? Все супер!

Еще раз благодарю за помощь, это очень классная работа!

Теперь ПафНутиЙ будет иметь хорушую тему на свой блог, как внедрить такие теги )) Я думаю этот код многим в пользу пойдет!

Всем спасибо и до встречи!

Gameer
225

1121 | 395

Gameer - 4 сентября 2015 20:06 - Эксперт

revived, да проверил, спасибо.

Истина в противоречии.​

revived
23 | 6

revived - 4 сентября 2015 19:31 - Юзер

И проверь WM заодно...

OlegVVV
1

OlegVVV - 6 марта 2016 14:39 - Юзер

Gameer,
А как дописать каноникал к категориям? есть допустим категория site.ru/newauto/ и что б в её коде был <link rel="canonical" href="http://site.ru/newauto/">

Gameer
225

1121 | 395

Gameer - 6 марта 2016 14:45 - Эксперт

OlegVVV, открыть /engine/engine.php найти :
if ($canonical) {
Выше вставить :
if($dle_module == "cat") $metatags .= PHP_EOL . "<link rel=\"canonical\" href=\"http://site.ru/{$cat_info[$category_id][alt_name]}/\">";

Истина в противоречии.​

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы