Не работает order="rand" в {custom}
Страницы: 1
Не работает order="rand" в {custom}, почему?
Здравствуйте!
Не понимаю, почему не хочет работать order="rand" в {custom}. Упорно выдает последние добавленные, никак не рандомно.
Код:

Код
{custom category="id категорий" order="rand" template="шаблон" aviable="global" from="0" limit="3" cache="yes"}
Прошу подсказать!
Не подписываюсь на темы, так что не слежу за вопросами, которые вы оставляете в топике после меня. Если нужно получить ответ, пишите в ЛС с указанием ссылки на мой комментарий.
Алик Яушев, 


cache="yes"

смени на cache="no"
Владислав,  не помогло.
Версия ДЛЕ какая?
Евгений,  9.6.
Алик Яушев, оно у Вас и не будет работать. Такая возможность была вот только добавлена в 9.7
Читайте пункт 1 из последнего релиза
_http://dle-news.ru/release/1534-datalife-engine-v97-final-release.html
Печально, как бы мне только эту возможность из новой версии интегрировать?
Много исправлений было внесено в движок уже.
Попробуй в папку modules залить файл show.custom.php из новой версии. Только сохрани старый, а то может они и не совместимы будут то придется вертать назад.
Евгений,  заменил, проблем не вызвало, но и работать рандомный вывод не начал.
Не хватает функции, вот в файле engine\modules\functions.php
замени функцию  custom_print на вот эту (взято из 9,7)

Код
function custom_print( $matches=array() ) {
   global $db, $is_logged, $member_id, $xf_inited, $cat_info, $config, $user_group, $category_id, $_TIME, $lang, $smartphone_detected, $dle_module, $allow_comments_ajax, $PHP_SELF;

   if ( !count($matches) ) return "";
   $param_str = trim($matches[1]);

   $aviable = array();
   $thisdate = date( "Y-m-d H:i:s", (time() + $config['date_adjust'] * 60) );
   $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)";
   $where = array();
   $allow_cache = $config['allow_cache'];

   if( preg_match( "#aviable=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $aviable = explode( '|', $match[1] );
   } else $aviable[] = "global";

   $do = $dle_module ? $dle_module : "main";

   if( ! (in_array( $do, $aviable )) and ($aviable[0] != "global") ) return "";

   if( preg_match( "#id=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $custom_id = str_replace( ',', "','", $db->safesql( trim($match[1]) ) );
      $where[] = "id IN ('" . $custom_id . "')";
   }

   $allow_list = explode( ',', $user_group[$member_id['user_group']]['allow_cats'] );
   
   if( $allow_list[0] != "all" AND !$user_group[$member_id['user_group']]['allow_short'] ) {

      if( $config['allow_multi_category'] ) {
            
         $where[] = "category regexp '[[:<:]](" . implode( '|', $allow_list ) . ")[[:>:]]'";
         
      } else {
            
         $where[] = "category IN ('" . implode( "','", $allow_list ) . "')";
         
      }
   
   }

   if( preg_match( "#category=['\"](.+?)['\"]#i", $param_str, $match ) ) {

      $custom_category = $db->safesql( trim(str_replace( ',', '|', $match[1] )) );

      if( $config['allow_multi_category'] ) {
         
         $where[] = "category regexp '[[:<:]](" . $custom_category . ")[[:>:]]'";
      
      } else {
         
         $custom_category = str_replace( "|", "','", $custom_category );
         $where[] = "category IN ('" . $custom_category . "')";
      
      }
   }

   $where[] = "approve=1";

   if( $config['no_date'] AND !$config['news_future'] ) $where[] = "date < '" . $thisdate . "'";

   if( preg_match( "#template=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $custom_template = trim($match[1]);
   } else $custom_template = "shortstory";

   if( preg_match( "#from=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $custom_from = intval($match[1]);
   } else $custom_from = 0;

   if( preg_match( "#limit=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $custom_limit = intval($match[1]);
   } else $custom_limit = $config['news_number'];

   if( preg_match( "#cache=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      if( $match[1] == "yes" ) $config['allow_cache'] = "yes";
      else $config['allow_cache'] = false;
   }

   if( $is_logged and ($user_group[$member_id['user_group']]['allow_edit'] and ! $user_group[$member_id['user_group']]['allow_all_edit']) ) $config['allow_cache'] = false;

   if( $cat_info[$custom_category]['news_sort'] != "" ) $news_sort = $cat_info[$custom_category]['news_sort']; else $news_sort = $config['news_sort'];
   if( $cat_info[$custom_category]['news_msort'] != "" ) $news_msort = $cat_info[$custom_category]['news_msort']; else $news_msort = $config['news_msort'];

   if ($config['allow_fixed']) $fixed = "fixed DESC, "; else $fixed = "";

   if( preg_match( "#order=['\"](.+?)['\"]#i", $param_str, $match ) ) {
      $allowed_sort = array ('date' => 'date', 'rating' => 'rating', 'reads' => 'news_read', 'comments' => 'comm_num','title' => 'title', 'rand' => 'RAND()' );

      if ( $allowed_sort[$match[1]] ) $news_sort = $allowed_sort[$match[1]];

      if ($match[1] == "rand" ) { $fixed = ""; $news_msort = ""; } else $news_msort = "DESC";
      if ($match[1] == "title" ) $news_msort = "ASC";
   }

   $sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;

   $custom_cache_id = $custom_id.$custom_category.$user_group[$member_id['user_group']]['allow_cats'].$custom_from.$custom_limit.$news_sort.$news_msort;

   $content = dle_cache( "news", $custom_cache_id, true );
   
   if( $content !== false ) {
      $config['allow_cache'] = $allow_cache;
      return $content;
   } else {

      $tpl = new dle_template();
      $tpl->dir = TEMPLATE_DIR;            
      
      include (ENGINE_DIR . '/modules/show.custom.php');
      
      if( $config['files_allow'] == "yes" ) if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
         $tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
      }
      
      create_cache( "news", $tpl->result['content'], $custom_cache_id, true );
      $config['allow_cache'] = $allow_cache;
      return $tpl->result['content'];
   
   }

}
 
Евгений,  не корректно отображается smile:(
Похоже что проще обновить движок до новой версии.
Цитата
Алик Яушев пишет:
Евгений, не корректно отображается smile:(
Похоже что проще обновить движок до новой версии.
Как раньше и писал - могут быть артефакты. Лучше всего обновить, а там уже по надобности дописать то что надо
Евгений,  в том то и дело, что дописывать придется многовато smile:) Остальное не шибко востребовано в новой версии, ранд бы только оттуда вырвать и не коряво интегрировать в предыдущую версию.
Хотя и не так много: всего лишь форум (4-5 файлов редактировать) и файлы engine.php, index.php
Изменено: Алик Яушев - 25 Сентября 2012 11:52
Там надо с файла ИНДЕКСа что то, походу, еще..smile:confused:
Цитата
Владислав пишет:
Там надо с файла ИНДЕКСа что то, походу, еще..smile:confused:
Если так сравнить файлы то да (9,5 и 9,7)
9,5
Код
 if (stripos ( $tpl->copy_template, "{custom" ) !== false) {
   $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$dle_module}')", $tpl->copy_template );
}


9,7

Код
if (stripos ( $tpl->copy_template, "{custom" ) !== false) {
   $tpl->copy_template = preg_replace_callback ( "#\\{custom(.+?)\\}#i", "custom_print", $tpl->copy_template );
} 

ну а дальше куча муток JS в новой версии для тегов ВИДЕО и работе со шрифтами
Страницы: 1
Похожие темы:
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
14:06 Яндекс прекращает поддержку технологии Турбо 
16:44 «Хлебные крошки» в адресе сайтов исчезнут из результатов поиска Google 
16:38 ру гембла 
10:59 DreamCash.tl - заработок на онлайн-видео. До 95% отчислений, отличный конверт! 
09:06 Бесплатные посещения 
01:10 Adsense личный опыт 
22:07 Помогите найти шаблон 
19:32 Инвайтинг(приглашения) в вашу группу/чат телеграм. 
18:29 Прием платежей для HIGH RISK | Прием платежей без сайта 
18:29 Услуги рассылки Viber|Whatsapp|IMO. 
18:25 Рассылка в TELEGRAM |Большой опыт работы | Любые тематики | Лучшая конверсия 
17:36 TrueMeds - Революционная Фарма Партнерка! Увеличь свой профит в x2 раза вместе с нами! 
15:20 Belurk — высокоскоростные анонимные прокси от 0,24 рублей 
14:56 TETChange-Обменник криптовалют 
20:47 Точные прогнозы на футбол 
16:16 SENDERSEX.COM - Тизерная партнёрка онлайн игры Эротические Фанты Онлайн 
00:55 С юмором по жизни! 
10:05 Китайский ИИ-ассистент DeepSeek начали запрещать в некоторых странах 
21:05 Telegram не смог провести различие между требованиями автократических режимов и законными демократическими запросами 
08:12 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
07:48 США готовят закон для уничтожения пиратских сайтов во всех странах мира