Случайное изображение

#1 1 ноября 2011 в 00:38
Версия движка 1.8
Ситуация такая, в модуле случайное изображение не могу настроить вывод сразу несколько изображений. Выводиться только одно фото
Редактирую файл module.php из папки modules\mod_random_image
строку 35 где LIMIT 1, меняю его на LIMIT 3.
Но все равно выводиться одно изображение.
Ставил LIMIT 0, тогда как и надо фото нет, но при любом другом значение LIMIT больше одной фотографии не выводится.
Фоток несколько, также несколько фотоальбомов, на всякий случай чистил cache.

Может кто сталкивался с данной ситуацией.
#2 1 ноября 2011 в 01:12
Если вы ничего не меняли в шаблоне для модуля то так и будет, там стандартно выводится одно изображение…
#3 1 ноября 2011 в 01:15
• Mike •, вы имеет ввиду шаблон mod_random_image.tpl, я его как раз и не трогал, а что там надо поменять для вывода несколько фото?
#4 1 ноября 2011 в 01:22
Ну, если кратко, то полностью надо поменять…


сейчас гляну переменные, напишу…
#5 1 ноября 2011 в 01:23
Ок, спасибо
#6 1 ноября 2011 в 01:34
Должно быть что-то вроде этого:
(полностью меняем содержимое файла)
  1.  
  2. {if $is_img}
  3. {foreach from=$item item=img}
  4. <div align="center">
  5. <a href="/photos/photo{$img.id}.html">
  6. <img src="/images/photos/small/{$img.file}" border="0" />
  7. </a>
  8. </div>
  9. { if $cfg.showtitle}
  10. <div align="center"><a href="/photos/photo{$img.id}.html">{$img.title}</a></div>
  11. {/if}
  12. {/foreach}
  13. {/if}
  14.  
если не получится изменения нужно вносить в сам модуль…
#7 1 ноября 2011 в 23:33
Спасибо, но не выходит, появляются почему-то сразу 13 фотографий и все одинаковые, хотя в модуле LIMIT стоит 3
#8 2 ноября 2011 в 00:53
Можно подправить файл самого модуля, например так (/modules/mod_random_image/module.php модуль небольшой поэтому целиком функция):
  1.  
  2. function mod_random_image($module_id){
  3. $inCore = cmsCore::getInstance();
  4. $inDB = cmsDatabase::getInstance();
  5. $cfg = $inCore->loadModuleConfig($module_id);
  6. $catsql = '';
  7. if ($cfg['album_id'] != 0) {
  8. if ($cfg['subs']) {
  9. $rootcat = $inDB->get_fields('cms_photo_albums', 'id='.$cfg['album_id'], 'NSLeft, NSRight');
  10. $catsql = " AND a.NSLeft >= {$rootcat['NSLeft']} AND a.NSRight <= {$rootcat['NSRight']}";
  11. } else {
  12. $catsql = "AND f.album_id = ". $cfg['album_id'];
  13. }
  14. }
  15. $sql = "SELECT f.*, a.title album_title
  16. FROM cms_photo_files f
  17. LEFT JOIN cms_photo_albums a ON a.id = f.album_id
  18. WHERE f.published = 1 ".$catsql."
  19. ORDER BY RAND()
  20. LIMIT 3";
  21. $result = $inDB->query($sql);
  22. $is_img = false;
  23. if ($inDB->num_rows($result)){
  24. $is_img = true;
  25. $qty = 3; //количество случайных фоток
  26. for ($j = 0; $j < $qty; ++$j){
  27. $items[] = $inDB->fetch_assoc($result);
  28. }
  29. }
  30. $smarty = $inCore->initSmarty('modules', 'mod_random_image.tpl');
  31. $smarty->assign('items', $items);
  32. $smarty->assign('is_img', $is_img);
  33. $smarty->assign('cfg', $cfg);
  34. $smarty->display('mod_random_image.tpl');
  35. return true;
  36. }
  37.  
соответствено в шаблоне:
  1.  
  2. {if $is_img}
  3. {foreach from=$items item="item"}
  4. <div align="center">
  5. <a href="/photos/photo{$item.id}.html">
  6. <img src="/images/photos/small/{$item.file}" alt="{$item.title}" />
  7. </a>
  8. </div>
  9. { if $cfg.showtitle}
  10. <div align="center"><a href="/photos/photo{$item.id}.html">{$item.title}</a></div>
  11. {/if}
  12. {/foreach}
  13. {/if}
  14.  
#9 2 ноября 2011 в 01:02
Спасибо, теперь отлично работает
#10 2 ноября 2011 в 01:06
Если в настройках модуля указано «все альбомы» некоторые фото могут «залипать», в смысле не меняются…
Вернул LIMIT 3 перстало залипать…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.