Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Похожие новости по тегам

Похожие новости по тегам


     31.01.2013    похожие новости    Все вопросы » Хаки    3887

вопрос
Как в DLE 9.5 сделать так, чтобы похожие новости формировались по тегам? Т.е. если у новости есть такое слово тег, как и в другой, то оно появляется в похожих новостях. Как это реализовать?

Ответил: dj-avtosh


Я Вам накидаю свои примерные мысли, в файле /engine/modules/show.full.php
где то начиная со строчки 555 есть строки


if( $config['related_news'] AND $view_template != "print"  AND strpos( $tpl->copy_template, "{related-news}" ) !== false) {


Вот там я увидел строку


                    $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE id IN({$row['related_ids']}) ORDER BY id DESC");



Полагаю ее можно заменить на



$results_tags = array();
$results_tags = $db->super_query( "SELECT tag FROM " . PREIX . "_tag WHERE news_id = " . (int) $row['id'], true );

if ( ! empty ( $results_tags ) ) {

$implode_tags = '(t.tag = "' . implode ( '" OR t.tag = "', $results_tags  ) . '")';

$db->query("SELECT p.* FROM dle_post p LEFT JOIN dle_tags t ON ( p.id = t.news_id ) WHERE p.approve = 1 AND p.id  != " . (int) $row['id'] ." AND " . $implode_tags . " ORDER BY p.id DESC LIMIT " . $config['related_number'] );

}




Затем найти


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


И заменить на



$results_tags = array();
$results_tags = $db->super_query( "SELECT tag FROM " . PREIX . "_tag WHERE news_id = " . (int) $row['id'], true );

if ( ! empty ( $results_tags ) ) {

$implode_tags = '(t.tag = "' . implode ( '" OR t.tag = "', $results_tags  ) . '")';

$db->query("SELECT p.* FROM dle_post p LEFT JOIN dle_tags t ON ( p.id = t.news_id ) WHERE p.approve = 1 AND p.id  != " . (int) $row['id'] ." AND " . $implode_tags . " ORDER BY p.id DESC LIMIT " . $config['related_number'] );

}




Писал на коленках, поэтому надо проверять!!!

3 комментария

Mric
Юзер

Mric - 15 февраля 2013 19:18 -

Большое спасибо, сейчас попробую проверить.

maxvel0007
Гости

maxvel0007 - 30 марта 2013 15:27 -

Цитата: Mric
ольшое с

Ну и как ?? Получилось ??

Sherzod
Юзер

Sherzod - 20 сентября 2013 10:39 -

Цитата: maxvel0007
Ну и как ?? Получилось ??

Проверил на dle 10, не работает!

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

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

наверх