Случаяная картинка АпГРейд:)

#16 28 января 2015 в 21:36
Ооочень нужен стал вариант вывода нескольких случайных картинок по горизонтали, здесь ссылки битые, может у кого сохранился — поделитесь пожалуйста. Очень надо, правда
#17 28 января 2015 в 23:30
Мне кстати, тоже для портфолио нужно.: с
#18 29 января 2015 в 01:14
увеличение значения LIMIT не даёт эффекта
#19 29 января 2015 в 07:54


увеличение значения LIMIT не даёт эффекта

Raiden

Все прекрасно работает mod_random_image/module.php, в коде настроено на 7:

  1.  
  2. <?php
  3. /******************************************************************************/
  4. // //
  5. // InstantCMS v1.10 //
  6. // http://instantcms.ru/ //
  7. // //
  8. // written by InstantCMS Team, 2007-2012 //
  9. // produced by InstantSoft, (www.instantsoft.ru) //
  10. // //
  11. // LICENSED BY GNU/GPL v2 //
  12. // //
  13. /******************************************************************************/
  14.  
  15. function mod_random_image($module_id){
  16. $inCore = cmsCore::getInstance();
  17. $inDB = cmsDatabase::getInstance();
  18. $cfg = $inCore->loadModuleConfig($module_id);
  19. $catsql = '';
  20. if ($cfg['album_id'] != 0) {
  21. if ($cfg['subs']) {
  22. $rootcat = $inDB->get_fields('cms_photo_albums', 'id='.$cfg['album_id'], 'NSLeft, NSRight');
  23. $catsql = " AND a.NSLeft >= {$rootcat['NSLeft']} AND a.NSRight <= {$rootcat['NSRight']}";
  24. } else {
  25. $catsql = "AND f.album_id = ". $cfg['album_id'];
  26. }
  27. }
  28. $sql = "SELECT f.*, a.title album_title
  29. FROM cms_photo_files f
  30. LEFT JOIN cms_photo_albums a ON a.id = f.album_id
  31. WHERE f.published = 1 ".$catsql."
  32. ORDER BY RAND()
  33. LIMIT 7";
  34. $result = $inDB->query($sql);
  35. $is_img = false;
  36. if ($inDB->num_rows($result)){
  37. $is_img = true;
  38. $qty = 7; //количество случайных фоток
  39. for ($j = 0; $j < $qty; ++$j){
  40. $items[] = $inDB->fetch_assoc($result);
  41. }
  42. }
  43. $smarty = $inCore->initSmarty('modules', 'mod_random_image.tpl');
  44. $smarty->assign('items', $items);
  45. $smarty->assign('is_img', $is_img);
  46. $smarty->assign('cfg', $cfg);
  47. $smarty->display('mod_random_image.tpl');
  48. return true;
  49. }
  50.  
Осталось доработать только mod_random_image.tpl, чтобы вывести горизонтально картинки
  1.  
  2. {if $is_img}
  3. {foreach from=$items item="item"}
  4. <div >
  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.  
#20 29 января 2015 в 11:55
alpik, я пробовал на 1.10.6
#21 29 января 2015 в 12:43
Для модуля "Случайная картинка" (не путать с модулем "Случайное фото")
Файл module.php
  1. function mod_random_image($mod, $cfg){
  2. ...........................
  3. LIMIT 1"; // Единицу заменить на требуемое для вывода кол-во
  4.  
  5. $result = $inDB->query($sql) ;
  6.  
  7. $is_img = false;
  8. $items = array(); // Добавить
  9. if($inDB->num_rows($result)){
  10. $is_img = true;
  11. while($item = $inDB->fetch_assoc($result)) $items[] = $item; // Изменить
  12. }
  13.  
  14. cmsPage::initTemplate('modules', $cfg['tpl'])->
  15. assign('items', $items)-> // Изменить
  16. assign('is_img', $is_img)->
  17. ....................................
Файл mod_random_image.tpl.
— После {if $is_img} вставить {foreach item=item from=$items}
— Перед последним {/if} вставить {/foreach}
#22 29 января 2015 в 14:31
Сделал по рецепту Паши. Вроде работает.
Можно скачать готовое решение для 1.10.6 тут Можно вставить код собственноручно:
Это по адресу вашсайт\modules\mod_random_image\
  1.  
  2. <?php
  3. /******************************************************************************/
  4. // //
  5. // InstantCMS v1.10.6 //
  6. // http://instantcms.ru/ //
  7. // //
  8. // written by InstantCMS Team, 2007-2015 //
  9. // produced by InstantSoft, (www.instantsoft.ru) //
  10. // //
  11. // LICENSED BY GNU/GPL v2 //
  12. // //
  13. /******************************************************************************/
  14.  
  15. function mod_random_image($mod, $cfg){
  16.  
  17. $inDB = cmsDatabase::getInstance();
  18.  
  19. $catsql = '';
  20.  
  21. if ($cfg['album_id'] != 0) {
  22. if ($cfg['subs']) {
  23. $rootcat = $inDB->get_fields('cms_photo_albums', 'id='.$cfg['album_id'], 'NSLeft, NSRight');
  24. $catsql = " AND a.NSLeft >= {$rootcat['NSLeft']} AND a.NSRight <= {$rootcat['NSRight']}";
  25. } else {
  26. $catsql = "AND f.album_id = ". $cfg['album_id'];
  27. }
  28. }
  29.  
  30. $sql = "SELECT f.*, a.title album_title
  31. FROM cms_photo_files f
  32. LEFT JOIN cms_photo_albums a ON a.id = f.album_id
  33. WHERE f.published = 1 ".$catsql."
  34. ORDER BY RAND()
  35. LIMIT 3
  36. "; //-LIMIT меняем значение на нужное нам количество фотографий-//
  37.  
  38. $result = $inDB->query($sql) ;
  39.  
  40. $is_img = false;
  41. $items = array();
  42.  
  43. if ($inDB->num_rows($result)){
  44.  
  45. $is_img = true;
  46. while($item = $inDB->fetch_assoc($result)) $items[] = $item;
  47. $item=$inDB->fetch_assoc($result);
  48.  
  49. }
  50.  
  51. cmsPage::initTemplate('modules', $cfg['tpl'])->
  52. assign('items', $items)->
  53. assign('is_img', $is_img)->
  54. assign('cfg', $cfg)->
  55. display($cfg['tpl']);
  56.  
  57. return true;
  58.  
  59. }
  60.  
Это по адресу вашсайт\templates\_default_\modules\
  1.  
  2. <table cellpadding="2" cellspacing="0" border="0" width="100%">
  3. {if $is_img}
  4. {foreach item=item from=$items}
  5. <td align="center" valign="middle" width="{math equation="100/x" x=$cfg.maxcols}%" class="mod_random_image" style="float:left;">
  6. <p><a href="/photos/photo{$item.id}.html"><img src="/images/photos/small/{$item.file}" border="0" /></a></p>
  7.  
  8. {if $cfg.showtitle}
  9. <p><a href="/photos/photo{$item.id}.html">{$item.title}</a></p>
  10. {/if}
  11. </td>
  12. {/foreach}
  13. {/if}
  14. </table>
  15.  
Если у вас шаблон не дефолт — второй код вставляем в нужном вам шаблоне, т.е. вашсайт\templates\ВАШ ШАБЛОН\modules\mod_random_image.tpl
#23 29 января 2015 в 15:36
Отлично, шаблон работает, спасибо всем!
#24 29 января 2015 в 15:43
Также добавив в mod_random_image.tpl class="mod_random_image" (что уже есть у меня в коде), мы имеем возможность добавить в style.css какое-нибудь оформление, например вот так:

  1.  
  2. .mod_random_image{
  3. padding: 2px;
  4. padding-top: 15px;
  5. margin: 2px;
  6. background-color: #FFFFFF;
  7. border: solid 1px silver;
  8. display: block;
  9. width: 140px; /*Указываем нужное нам значение*/
  10. height: 170px; /*Указываем нужное нам значение*/
  11. float: left;
  12. text-align: center;
  13. }
  14.  
#25 30 января 2015 в 19:47
Раз уж пошла такая пьянка ) а реально это сделать плагином? На данный момент стоит плагин Марата (Похожие фотографии) — вместо него хотелось бы просто тупо чтобы показывались рнд-шным способом фото из альбома… ммм, это я говорю о том, когда просматриваешь фото из какого либо альбома )
#26 30 января 2015 в 21:49
alpik, я пока с плагинами вообще никак не имел дела, если на выходных будет свободное время — покопаюсь
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.