Хак [хак] вывод похожих новостей, в шаблоне короткой нвоости (shortstory.tpl)

Тема в разделе "DLE", создана пользователем glam, 16 сен 2008.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. glam

    glam

    Регистр.:
    12 апр 2007
    Сообщения:
    734
    Симпатии:
    217
    Идея: Хортица
    Реализация: Glam
    Дата: 16.09.2008
    Версия DLE: 7.2 only

    Описание:

    Данный хак выводит похожие новости в шаблоне короткой новости, из той же категории.

    Установка:

    1 Откройте /engine/modules/show.short.php и найдите:

    PHP:
        if ( strpos$tpl->copy_template"[not-category=" ) !== false) {
            
    $tpl->copy_template preg_replace"#\\[not-category=(.+?)\\](.*?)\\[/not-category\\]#ies","check_category('\\1', '\\2', '{$category_id}', false)"$tpl->copy_template);
        }
    2 Ниже вставьте:

    PHP:
    // -----------------------
    // похожие новости в короткой новости by Glam
    // -----------------------
        
    if ($config['related_news']) {

            if (
    $config['allow_cache'] != "yes") { $config['allow_cache'] = "yes"$revert_cache true; }
            else 
    $revert_cache false;

        
    $buffer dle_cache("related"$row['id']);

        if (
    $buffer === FALSE) {

            if (
    strlen($row['full_story']) < strlen($row['short_story']))
                
    $body $row['short_story'];
            else
                
    $body $row['full_story'];

            
    $body $db->safesql(strip_tags(stripslashes($metatags['title']." ".$body)));

            
    $config['related_number'] = intval($config['related_number']);
            if (
    $config['related_number'] < 1$config['related_number'] = 5;

            
    $db->query ("SELECT id, title, date, category, alt_name, flag FROM " PREFIX "_post WHERE MATCH (title, short_story, full_story, xfields, title) AGAINST ('$body') AND category = ".$row['category']." AND id != ".$row['id']." AND approve='1'".$where_date." LIMIT ".$config['related_number']);

            while(
    $related $db->get_row()) {

                
    $related['date'] = strtotime($related['date']);
                
    $related['category'] = intval($related['category']);

                if (
    strlen($related['title']) > 75)
                    
    $related['title'] = substr ($related['title'], 075)." ...";

                if (
    $config['allow_alt_url'] == "yes") {

                    if (
    $related['flag'] AND $config['seo_type']) {

                        if (
    $related['category']  AND $config['seo_type'] == 2) {

                            
    $full_link $config['http_home_url'].get_url($related['category'])."/".$related['id']."-".$related['alt_name'].".html";

                        } else {

                            
    $full_link $config['http_home_url'].$related['id']."-".$related['alt_name'].".html";

                        }

                    } else {

                        
    $full_link $config['http_home_url'].date('Y/m/d/'$related['date']).$related['alt_name'].".html";
                    }

                } else {

                    
    $full_link $config['http_home_url']."index.php?newsid=".$related['id'];

                }


                    
    $buffer .= "<li><a href=\"".$full_link."\">".stripslashes($related['title'])."</a></li>";

            }

            
    $db->free();
            
    create_cache ("related"$buffer$row['id']);
          }

            
    $tpl->set('{related-news}'$buffer);

            if (
    $revert_cache$config['allow_cache'] = "no";

        }
    // -----------------------
    // конец похожих новостей
    // -----------------------
    3 В шаблоне короткой новости shortstory.tpl вставьте в нужном месте тег {related-news} для вывода.
     
  2. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142

    Eto ubijstvo dlia DB ;]

    lutche prosto scityvat` cashe iz polnoi novosti, jesli jest cache to scitali jego, jesli netu to ili sozdali, ili vremenno nicio ne napisali.
    togda, kogda cel proctiot polnuju novost` sozdastca cache, i on pojavitca v short story.

    a ctoby sozdavalsia cache pravelnyi po kategoriji, to prosto popravit modules/show.full.php

    ;]



    nu eto konecno prezhde vsego jesli Nagruzka vazhna.

    ;]
     
Статус темы:
Закрыта.