вопрос
Как в DLE 9.5 сделать так, чтобы похожие новости формировались по тегам? Т.е. если у новости есть такое слово тег, как и в другой, то оно появляется в похожих новостях. Как это реализовать?
Я Вам накидаю свои примерные мысли, в файле /engine/modules/show.full.php
где то начиная со строчки 555 есть строки
Вот там я увидел строку
Полагаю ее можно заменить на
Затем найти
И заменить на
Писал на коленках, поэтому надо проверять!!!
где то начиная со строчки 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'] );
}
Писал на коленках, поэтому надо проверять!!!