Выборка похожих новостей на сайте происходит по похожим категориям. Категории на сайте прописаны только день, месяц и год выпуска фильма. Жанры фильмов прописаны тегами. В связи с этим, похожие фильмы формируются и выводятся не логично.
Например: К "Матрице" предлагает посмотреть "Король лев", день выхода совпадает в категориях.
//####################################################################################################################
// Определение категорий и их параметры
//####################################################################################################################
$cat_info = get_vars( "category" );
if( ! is_array( $cat_info ) ) {
$cat_info = array ();
$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
while ( $row = $db->get_row() ) {
$cat_info[$row['id']] = array ();
foreach ( $row as $key => $value ) {
$cat_info[$row['id']][$key] = stripslashes( $value );
}
}
set_vars( "category", $cat_info );
$db->free();
}
$title = $db->safesql( trim( convert_unicode( $_POST['title'], $config['charset'] ) ) );
if( $title == "" ) die();
$buffer = "";
$id = intval( $_POST['id'] );
if( $id ) $where = " AND id != '" . $id . "'";
else $where = "";
$db->query( "SELECT id, title, date, category, alt_name, MATCH (title, short_story, full_story, xfields) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );
while ( $related = $db->get_row() ) {
$related['date'] = strtotime( $related['date'] );
$related['category'] = intval( $related['category'] );
$news_date = date( 'd-m-Y', $related['date'] );
if( $config['allow_alt_url'] == "yes" ) {
if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {
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'];
}
if ( dle_strlen($related['title'], $config['charset']) > 65 ) $related['title'] = dle_substr ($related['title'], 0, 65, $config['charset'])." ...";
if ( $user_group[$member_id['user_group']]['allow_all_edit'] ) {
$d_link = "<a href=\"?mod=editnews&action=editnews&id={$related['id']}\" target=\"_blank\"><img style=\"vertical-align: middle;border:none;\" alt=\"{$lang['edit_rel']}\" src=\"engine/skins/images/notepad.png\" /></a> <a onclick=\"confirmDelete('?mod=editnews&action=doeditnews&ifdelete=yes&id={$related['id']}&user_hash={$dle_login_hash}', '{$related['id']}'); return false;\" href=\"?mod=editnews&action=doeditnews&ifdelete=yes&id={$related['id']}&user_hash={$dle_login_hash}\" target=\"_blank\"><img style=\"vertical-align: middle;border:none;\" alt=\"{$lang['edit_seldel']}\" src=\"engine/skins/images/delete.png\" /></a> ";
} else $d_link = "";
$buffer .= "<div style=\"padding:2px;\">{$d_link}{$news_date} - <a href=\"" . $full_link . "\" target=\"_blank\">" . stripslashes( $related['title'] ) . "</a></div>";
}
$db->close();
@header( "Content-type: text/html; charset=" . $config['charset'] );
if( $buffer ) echo "<div style=\"width:600px; background: #ffc;border:1px solid #9E9E9E;padding: 5px;margin-top: 7px;margin-right: 10px;\">" . $buffer . "</div>";
else echo "<div style=\"width:542px;background: #ffc;border:1px solid #9E9E9E;padding: 5px;margin-top: 7px;margin-right: 10px;\">" . $lang['related_not_found'] . "</div>";
?>
По мере своих знаний пытался настроить выборку по тегам, но не выходит у меня. Знаний не хватает.
Буду очень признателен и счастлив, если поможете с решением данной проблемы.