Перейти к публикации

Рекомендованные сообщения

Dle 9.6. Нужно сделать 2 модуля похожих новостей в полной новости. Например, чтобы один был {related-news}, а второй {related-newsx}.

на {related-news} выводились все похожие новости

на {related-newsx} выводились похожие новости из 23 категории.

Раньше на DLE 8.3 это было легко реализовать в файле show.full.php, а сейчас не так уж легко (изменилась структура файла show.full.php)

Подскажите, пожалуйста, как это сделать, дайте код.

Ссылка на сообщение
Поделиться на других сайтах

Что сделано в файле: show.full.php:



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





if ( $allow_full_cache ) $bufferx = dle_cache( "relatedx", $row['id'].$config['skin'], true ); else $bufferx = false;


if( $bufferx === FALSE ) {


if ( $row['related_ids'] ) {

$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");

$first_show = false;


} else {

$first_show = true;

$related_ids = array();


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'] = 2;


$allowed_cats = array();


foreach ($user_group as $value) {

if ($value['allow_cats'] != "all" AND !$value['allow_short'] ) $allowed_cats[] = $db->safesql($value['allow_cats']);

}


if (count($allowed_cats)) {

$allowed_cats = implode(",", $allowed_cats);

$allowed_cats = explode(",", $allowed_cats);

$allowed_cats = array_unique($allowed_cats);

sort($allowed_cats);


if ($config['allow_multi_category']) {


$allowed_cats = "category regexp '[[:<:]](" . implode ( '|', $allowed_cats ) . ")[[:>:]]' AND ";


} else {


$allowed_cats = "category IN ('" . implode ( "','", $allowed_cats ) . "') AND ";


}

} else $allowed_cats="";


// $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'] );



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




}


$tpl2 = new dle_template();

$tpl2->dir = TEMPLATE_DIR;

$tpl2->load_template( 'relatednews.tpl' );


if( strpos( $tpl2->copy_template, "[xfvalue_" ) !== false OR strpos( $tpl2->copy_template, "[xfgiven_" ) !== false ) { $xfound = true; }

else $xfound = false;


while ( $relatedx = $db->get_row() ) {


if ( $first_show ) $related_ids[] = $relatedx['id'];


$relatedx['date'] = strtotime( $relatedx['date'] );


if( ! $relatedx['category'] ) {

$my_cat = "---";

$my_cat_link = "---";

} else {


$my_cat = array ();

$my_cat_link = array ();

$rel_cat_list = explode( ',', $relatedx['category'] );


if( count( $rel_cat_list ) == 1 ) {


$my_cat[] = $cat_info[$rel_cat_list[0]]['name'];


$my_cat_link = get_categories( $rel_cat_list[0] );


} else {


foreach ( $rel_cat_list as $element ) {

if( $element ) {

$my_cat[] = $cat_info[$element]['name'];

if( $config['allow_alt_url'] == "yes" ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";

else $my_cat_link[] = "<a href=\"$PHP_SELF?do=cat&category={$cat_info[$element]['alt_name']}\">{$cat_info[$element]['name']}</a>";

}

}


$my_cat_link = implode( ', ', $my_cat_link );

}


$my_cat = implode( ', ', $my_cat );

}


$relatedx['category'] = intval( $relatedx['category'] );


if( dle_strlen( $relatedx['title'], $config['charset'] ) > 75 ) $relatedx['title'] = dle_substr( $relatedx['title'], 0, 75, $config['charset'] ) . " ...";


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


if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {


if( $relatedx['category'] and $config['seo_type'] == 2 ) {


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


} else {


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


}


} else {


$full_link = $config['http_home_url'] . date( 'Y/m/d/', $relatedx['date'] ) . $relatedx['alt_name'] . ".html";

}


} else {


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


}







// *************************

// START MODERN RELATED NEWS

// *************************

$xfields = xfieldsdataload( $relatedx['xfields'] );



$pictitle = stripslashes( $relatedx['title'] );

$pic = $xfields['img']; // <----------------------------------------- ТУТ ЗАМЕНИТЬ НА ИМЯ СВОЕГО ПОЛЯ



if ($pic=='')

$pic = 'http://vmiruspeha.ru/templates/Jordan/images/nothumb.gif';


$relatedx['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($relatedx['short_story']));

$relatedx['short_story'] = preg_replace("/<!--*-->/si","",$relatedx['short_story']);


if( strlen( $relatedx['short_story'] ) > 300 ) $relatedx['short_story'] = substr( $relatedx['short_story'], 0, 300 ) . " ... <a href=\"$full_link\"><b>Начать просмотр</b></a>";





$bufferx .= '<div style="float:left; width:50%;"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="news">

<tr>

<td width="100" height="290" align="left" valign="middle"><img src="'.$pic.'"width="140"></td>

<td width="91%" valign="top" align="left" style="padding-left: 0px; padding-bottom: 7px;"><h4><a href="'.$full_link.'">'.stripslashes( $relatedx['title']).'</a></h4>'.stripslashes($relatedx['short_story']).'</td>

</tr>

</table></div>';


// *************************

// END MODERN RELATED NEWS

// *************************





$db->free();


if ( $first_show ) {

if ( count($related_ids) ) {

$related_ids = implode(",",$related_ids);

$db->query( "UPDATE " . PREFIX . "_post_extras SET related_ids='{$related_ids}' WHERE news_id='{$row['id']}'" );

}

}


if ( $allow_full_cache ) create_cache( "relatedx", $bufferx, $row['id'].$config['skin'], true );

}


if ( $bufferx ) {


$tpl->set( '[related-news]', "" );

$tpl->set( '[/related-news]', "" );


} else $tpl->set_block( "'\\[related-news\\](.*?)\\[/related-news\\]'si", "" );


$tpl->set( '{related-newsx}', $bufferx );

unset($bufferx);


}





}

Не работает. Помогите отредактировать кусок кода.

Изменено пользователем javer
Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...