Чтение RSS каналов

Форум

Открыть Ответить

Поиск похожих материалов в модуле.

0

0
1
23.01.2012 14:32:57
Здравствуйте. Заказал доработку одного из модулей. В задании которого было указано, что хотелось бы видеть на странице с модуля в пользовательской части раздел Похожие Публикации.

Вот человек задумался как это сделать, не нагружая дополнительно систему лишними запросами. Не подскажет никто?

Тоесть все будет оформлено как на ДЛЕ. Поиск был бы в Автоматическом режиме.


Версия системы: SLAED CMS 5.* Pro
Версия PHP: PHP 5
4.43

4.43
2
24.01.2012 12:29:55
Ну ты даешь за разработчика всю работу так сделаешь.

Я давно реализовал такое на сайте с кешированием запроса похожих новостей.
3.76

3.76
3
24.01.2012 15:44:21
ra55551 я не просил писать, что я сделаю за разработчика, а что нет. Я попросил обрисовать как лучше сделать. Или показать пример. Вместо того, чтобы расхваливать себя какой ты умный. Лучше бы ссылку на пример написал. Или подсказал алгоритм.
4.43

4.43
4
25.01.2012 13:27:26
Вот почитай эту статью Кеширование блоков с sql-запросами для slaed cms.

Ну а тут готовое решение


Написал на скорую руку . Есть ньансы но думаю разберешься



Найти код в modules/news/index.php

//старый код
if ($confn['assoc']) {
if ($associated[strlen($associated)-1] == "-") $associated = substr($associated, 0, -1);
$asso = str_replace("-", ",", $associated);
$limit = intval($confn['asocnum']);
list($count) = $db->sql_fetchrow($db->sql_query("SELECT Count(sid) FROM ".$prefix."_news WHERE catid IN (".$asso.") AND sid!='".$id."' AND time<=now() AND status!='0'"));
if ($count >= $limit) {
$random = mt_rand(0, $count - $limit);
$result = $db->sql_query("SELECT sid, title, time FROM ".$prefix."_news WHERE catid IN (".$asso.") AND sid!='".$id."' AND time<=now() AND status!='0' ORDER BY time DESC LIMIT ".$random.", ".$limit);
$cont .= tpl_eval("open");
$cont .= "<h2>"._ASSTORY."</h2>"
."<table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" class=\"hover\">";
while(list($s_sid, $title, $time) = $db->sql_fetchrow($result)) {
$cont .= "<tr><td><a href=\"index.php?name=".$conf['name']."&op=view&id=".$s_sid."\" title=\"".$title."\"><img src=\"".img_find("all/news.png")."\" border=\"0\"></a></td><td width=\"98%\"><a href=\"index.php?name=".$conf['name']."&op=view&id=".$s_sid."\" title=\"".$title."\">".$title."</a></td></tr>";
}
$cont .= "</table>";
$cont .= tpl_eval("close");
}
}



заменить на


//новый код будет создавать файл кеша с ид данной новости
if ($confn['assoc']) {
//проверяем если кеш есть то берем из кеша
if(file_exists("config/cache/newsrelated".$id.".tmp")){
$cont .= file_get_contents("config/cache/newsrelated".$id.".tmp");
}
//если нет то создаем фал кеша с ид данной новости
else{

if ($associated[strlen($associated)-1] == "-") $associated = substr($associated, 0, -1);
$asso = str_replace("-", ",", $associated);
$limit = intval($confn['asocnum']);
list($count) = $db->sql_fetchrow($db->sql_query("SELECT Count(sid) FROM ".$prefix."_news WHERE catid IN (".$asso.") AND sid!='".$id."' AND time<=now() AND status!='0'"));
if ($count >= $limit) {
$random = mt_rand(0, $count - $limit);
$result = $db->sql_query("SELECT sid, title, time FROM ".$prefix."_news WHERE catid IN (".$asso.") AND sid!='".$id."' AND time<=now() AND status!='0' ORDER BY time DESC LIMIT ".$random.", ".$limit);
$cont .= tpl_eval("open");
$cont .= "<h2>"._ASSTORY."</h2>"
."<table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\" class=\"hover\">";
while(list($s_sid, $title, $time) = $db->sql_fetchrow($result)) {
$cont .= "<tr><td><a href=\"index.php?name=".$conf['name']."&op=view&id=".$s_sid."\" title=\"".$title."\"><img src=\"".img_find("all/news.png")."\" border=\"0\"></a></td><td width=\"98%\"><a href=\"index.php?name=".$conf['name']."&op=view&id=".$s_sid."\" title=\"".$title."\">".$title."</a></td></tr>";
}
$cont .= "</table>";
$cont .= tpl_eval("close");
}
//записываем кеш
$fp = fopen("config/cache/newsrelated".$id.".tmp", "wb");fwrite($fp,$cont);fclose($fp);


}




}





В function/function.php добавить функцию

/* удалнение кеша*/
function clear_cache($cache_area = false,$system="") {
$adsystem = ($system) ? '/system' : "";
$fdir = opendir('config/cache'.$adsystem.'' );

while ( $file = readdir( $fdir ) ) {
if( $file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system' ) {

if( $cache_area ) {

if( strpos( $file, $cache_area ) !== false ) @unlink( 'config/cache/'.$adsystem.'' . $file );

} else {

@unlink( 'config/cache/'.$adsystem.'' . $file );

}
}
}
}


В файле modules/news/admin/index.php в функции function news() после строки

echo $cont;



Вставить


//Теперь при заходе в админку буде очищаться весь кеш.
clear_cache();

3.76

3.76
5
25.01.2012 15:12:06
Благодарю.
4.43

4.43
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь