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

Как задать небольшое правило для исправления бага в rel="next" и rel="prev" для DLE 11?


     14.09.2016    Общие вопросы по PHP    391

вопрос
В общем, всё работает отлично в данном коде на DLE 11, НО найден маленький баг: если допустим в категории 1-а страница (то есть, нету 2-ой страницы), то в head отображается:
<link rel="next" href="http://site.net/page/2/" />
хотя этой страницы нету!!! Следовательно нужно задать правило, что если в категории одна страница, значит тег rel="next" не добавляется. Программисты помогите пожалуйста доделать!

engine.php , находим:
if ($canonical) {

перед этим вставляем:
if($dle_module == "main" || $dle_module == "cat")
{
    $cstarts = isset($_REQUEST["cstart"]) ? intval($_REQUEST["cstart"]) : 1;
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    $all_pages_counts = dle_cache( "news_rel_" . $cat_cat, $cat_cat, false);
    if($all_pages_counts === false)
    {
        $all_pages_counts = intval(ceil( $counts_all / $config['news_number'] ));
        create_cache ( "news_rel_" . $cat_cat, $all_pages_counts, $cat_cat, false );
    }
    if($cstarts < 2 && 1 != $all_pages_counts)
    {
        $next_rel = PHP_EOL . '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '/" />';
        $prev_rel = '';
    }
    else if(1 != $all_pages_counts)
    {
        if($cstarts >= $all_pages_counts)
            $next_rel = '';
        else
            $next_rel = PHP_EOL . '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstarts + 1) .'" />';

        if($cstarts == 2)
            $prev_rel = PHP_EOL . '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '" />';
        else
            $prev_rel = PHP_EOL . '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstarts - 1) .'/" />';
    }

    $metatags .= $prev_rel . $next_rel;
}

Открываем /engine/modules/show.short.php находим :
$count_all = 0;

Ниже вставить :
$all_pages_counts = $count_all;

Ответил: Gameer


$all_pages_counts = $count_all;
заменить на :
$counts_all = $count_all;

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

ZeN41k
96

ZeN41k - 15 сентября 2016 08:15 - Юзер

GAMEER, всё-равно отображается(

vitnet
221

2255 | 964

vitnet - 19 сентября 2016 23:12 - Эксперт


Gameer
233

1150 | 399

Gameer - 19 сентября 2016 23:23 - Юзер

Вот весь рабочий код:
Открываем /engine/engine.php, находим код :
if ($canonical) {
если нету таковой строчки, значит у вас старая версия по этому ищите эту строчку :
if ($config['allow_rss']) $metatags .= <<
И выше вставить :
if($dle_module == "main" || $dle_module == "cat")
{
    $cstarts = isset($_REQUEST["cstart"]) ? intval($_REQUEST["cstart"]) : 1;
    $cat_cat =  !empty($category) ? strip_tags(stripslashes($category)) . '/' : '';
    $all_pages_counts = dle_cache( "news_rel_" . $cat_cat, $cat_cat, false);
    if($all_pages_counts === false)
    {
        $all_pages_counts = intval(ceil( $counts_all / $config['news_number'] ));
        create_cache ( "news_rel_" . $cat_cat, $all_pages_counts, $cat_cat, false );
    }
    if($cstarts < 2 && 1 != $all_pages_counts)
    {
        $next_rel = PHP_EOL . '<link rel="next" href="'. $config['http_home_url'] . $cat_cat . 'page/2' . '">';
        $prev_rel = '';
    }
    else if(1 != $all_pages_counts)
    {
        if($cstarts >= $all_pages_counts)
            $next_rel = '';
        else
            $next_rel = PHP_EOL . '<link rel="next" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstarts + 1) .'">';
        
        if($cstarts == 2)
            $prev_rel = PHP_EOL . '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat . '">';
        else
            $prev_rel = PHP_EOL . '<link rel="prev" href="'. $config['http_home_url'] . $cat_cat .  'page/'. ($cstarts - 1) .'">';
    }
    
    $metatags .= $prev_rel . $next_rel;
}

Открываем /engine/modules/show.short.php находим :
$count_all = 0;
Ниже вставить :
$counts_all = $count_all;

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

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