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

Разные шаблоны для похожих новостей


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

Всем привет, появилась нужда по разному вывести похожие новости (источники картинки разные) в разных категориях, так как внутри relatednews.tpl не работает теги вроде категорий, пришлось искать костыль и он был найден - разные шаблоны похожих новостей.

Автор хака PUNPUN, хак рабочий но есть 1 неприятная проблема, отписал автору, обещал посмотреть, но жду уже месяц наверно. 

 

Сам хак:

 

1. Открыть /engine/modules/show.full.php найти :

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

Заменить на :

if (stripos($tpl->copy_template, "{related-news:") !== false)
{
    preg_match("#\\{related-news:(.+?)\\}#is", $tpl->copy_template, $related_matches);
    $tpl2->load_template( $related_matches[1] . '.tpl' );
}
else
    $tpl2->load_template( 'relatednews.tpl' );

Далее найти :

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

Заменить на :

if (stripos($tpl->copy_template, "{related-news:") !== false)
    $tpl->set( '{related-news:'.$related_matches[1].'}', $related_buffer );
else
    $tpl->set( '{related-news}', $related_buffer );


2. В fullstory.tpl прописывать так

[cat-list=1,2,3]{related-news:relatednews_2}[/cat-list]

 

Все работает, но проблема появляется при включении кеша, при первом открытии страницы - похожие новости отображаются корректно, при обновлении страницы - выводится просто {related-news:relatednews_2}, спустя какое то время - снова похожие новости и так по кругу,  кеш не создается?.

 

Я думаю это достаточно полезный хак и стоит довести его до ума.

Спасибо.

Изменено пользователем south_park
Ссылка на сообщение
Поделиться на других сайтах

попробуй добавь еще 

Найти 

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

заменить на 

if ( $allow_full_cache ){					
	if (stripos($tpl->copy_template, "{related-news:") !== false){
		create_cache( {$related_matches[1], $related_buffer, $row['id'].$config['skin'], true );										 
	}else{
	create_cache( "related", $related_buffer, $row['id'].$config['skin'], true );
	}					
}

 

 и выше

Найти 

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

заменить на 

if ( $allow_full_cache ) {
	if (stripos($tpl->copy_template, "{related-news:") !== false){
    		preg_match("#\\{related-news:(.+?)\\}#is", $tpl->copy_template, $related_matches);
    		$related_buffer = dle_cache($related_matches[1], $row['id'].$config['skin'], true );
  	}else{
      		$related_buffer = dle_cache( "related", $row['id'].$config['skin'], true );
  	}		
}else{
	$related_buffer = false;
}	

 

Изменено пользователем alex32
Ссылка на сообщение
Поделиться на других сайтах

alex32

Спасибо, все работает. правда у вас лишняя скобка в первой замене, отредактируйте пожалуйста.

 

Должно быть так: 

if ( $allow_full_cache ){					
	if (stripos($tpl->copy_template, "{related-news:") !== false){
		create_cache( $related_matches[1], $related_buffer, $row['id'].$config['skin'], true );										 
	}else{
	create_cache( "related", $related_buffer, $row['id'].$config['skin'], true );
	}					
}

 

Изменено пользователем south_park
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...