chocolate_moles Posted September 29, 2013 Report Share Posted September 29, 2013 (edited) Модуль управления слайдером через панель администратораДобавление, удаление, изменение очередности слайдов через админкуДобавление ссылок и описанияАдаптивыный слайдер Nivo SliderПодробная инструкция по установкеsimplaSlider.rar Edited October 10, 2015 by chocolate_moles Quote Link to post Share on other sites
Danya Posted September 29, 2013 Report Share Posted September 29, 2013 chocolate_moles Спасибо большое. Молодец! Можно ещё добавить включение и выключение картинки, чтобы не удалять, а когда нужно включать! Quote Link to post Share on other sites
Danya Posted September 29, 2013 Report Share Posted September 29, 2013 ДОПОЛНЕНИЕ 1. в базе в s_slides добавляем поле visible: ALTER TABLE `s_slides` ADD `visible` TINYINT( 1 ) NOT NULL DEFAULT '1' AFTER `name` 2. в api/Slides.php добавляем в get_slide: visible, в этом же файле, ниже в get_slides добавляем: visible, 3. в файле simpla/design/html/sliders.tpl заменить: {foreach $slides as $slide} <div class="row"> на {foreach $slides as $slide} <div class="{if !$slide->visible}invisible{/if} row"> далее, после: <a class="delete" title="Удалить" href="#"></a> добавляем: <a class="enable" title="Активна" href="#"></a> далее, перед: <option value="delete">Удалить</option> добавляем: <option value="enable">Сделать видимыми</option> <option value="disable">Сделать невидимыми</option> ниже в скриптах добавляем: // Включение и выключение изображения $("a.enable").click(function() { var icon = $(this); var line = icon.closest(".row"); var id = line.find('input[type="checkbox"][name*="check"]').val(); var state = line.hasClass('invisible')?1:0; icon.addClass('loading_icon'); $.ajax({ type: 'POST', url: 'ajax/update_object.php', data: {'object': 'slide', 'id': id, 'values': {'visible': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'}, success: function(data){ icon.removeClass('loading_icon'); if(state) line.removeClass('invisible'); else line.addClass('invisible'); }, dataType: 'json' }); return false; }); 4. в файле simpla/SlidesAdmin.php в if($this->request->method('post')) после: switch($this->request->post('action')) { добавляем case 'disable': { foreach($ids as $id) $this->slides->update_slide($id, array('visible'=>0)); break; } case 'enable': { foreach($ids as $id) $this->slides->update_slide($id, array('visible'=>1)); break; } 5. в шаблоне сайта в файле slider/slider.tpl вывод картинки обернуть: {if $s->visible}вывод картинки{/if} 6. в файле simpla\ajax\update_object.php добавляем: case 'slide': if($simpla->managers->access('slides')) $result = $simpla->slides->update_slide($id, $values); break; 7. в файле slides.css добавляем: .slide .title .enable{ float:right; background-image: url(../images/lightbulb.png); padding: 8px; margin: 2px; zoom: 1; background-position: center center; background-repeat: no-repeat; } .invisible .slide .title .enable{ float:right; background-image: url(../images/lightbulb_off.png); padding: 8px; margin: 2px; zoom: 1; background-position: center center; background-repeat: no-repeat; } Теперь есть возможность выключать/включать картинку Quote Link to post Share on other sites
bjiaguk Posted November 7, 2013 Report Share Posted November 7, 2013 возникло несколько вопросов по Дополнению:2. в api/Slides.php добавляем в get_slide: visible, - нельзя ли для новичков чуть подробнее? куда тут добавлять-то /* * * Функция возвращает слайд по его id или url * */ public function get_slide($id) { if(is_int($id)) $filter = $this->db->placehold('id = ?', $id); else $filter = $this->db->placehold('url = ?', $id); $query = "SELECT id, name, url, description, image, position FROM __slides WHERE $filter ORDER BY position LIMIT 1"; $this->db->query($query); return $this->db->result(); } 5. в шаблоне сайта в файле slider.tpl вывод картинки обернуть: {if $s->visible}вывод картинки{/if} тоже не ясно куда это записывать.Лампочки на слайдах появились - имитируют работу, выпадающий список предлагает сделать слайды видимым/невидимым, но они не отключаются. Подозреваю не туда визибл с выводом картинок вставил. Quote Link to post Share on other sites
Sulla Posted November 13, 2013 Report Share Posted November 13, 2013 Тут 2. в api/Slides.php добавляем в get_slide: visible, - в запрос , выделено: public function get_slide($id) { ... $query = "SELECT id, name, visible, url, description, image, position FROM __slides WHERE $filter ORDER BY position LIMIT 1"; ... } 5. в шаблоне сайта в файле slider.tpl вывод картинки обернуть: {if $s->visible} <div class="slider-wrapper theme-default"> .... </div> ... {/if} <script type="text/javascript"> $(window).load(function() {Так понятнее ? Quote Link to post Share on other sites
Danya Posted November 14, 2013 Report Share Posted November 14, 2013 Второй пункт правильно! В пятом пункте нужно обернуть в файле /slider/slider.tpl вот так: {foreach $slide as $s} {if $s->visible} {if $s->image} {if $s->url}<a href="{$s->url}">{/if} <img src="{$s->image}" alt="" {if $s->description}title="#slide_{$s->id}"{/if} /> {if $s->url}</a>{/if} {/if} {/if} {/foreach} Quote Link to post Share on other sites
Vasiliy-lv Posted November 30, 2013 Report Share Posted November 30, 2013 chocolate_moles, Спасибо всё работает отлично Quote Link to post Share on other sites
Noxter Posted November 30, 2013 Report Share Posted November 30, 2013 А зачем делать проверку в шаблоне условием {if $s->visible} если можно сразу в функции выбора слайдов это сделать, т.е. в api? Quote Link to post Share on other sites
Виталий Анатольевич Posted December 3, 2013 Report Share Posted December 3, 2013 А зачем делать проверку в шаблоне условием {if $s->visible} если можно сразу в функции выбора слайдов это сделать, т.е. в api? В админке ведь нужно отображать и выключенные слайды PS Было бы хорошо поставить ресайзер... ну или могу сам накатать "дополнение" Quote Link to post Share on other sites
Noxter Posted December 3, 2013 Report Share Posted December 3, 2013 В админке ведь нужно отображать и выключенные слайды PS Было бы хорошо поставить ресайзер... ну или могу сам накатать "дополнение"Ну а в чем проблема использовать фильтр т.е. $filter['visible']? Quote Link to post Share on other sites
Виталий Анатольевич Posted December 3, 2013 Report Share Posted December 3, 2013 эту причину никто кроме разработчика не знает Quote Link to post Share on other sites
antin Posted December 19, 2013 Report Share Posted December 19, 2013 Если в друг кто то неумеет самостоятельно устанавливать, обращайтесь к автору chocolate_molesЯ сам несмог поставить, мучался день (безрукий)chocolate_moles установил все за 15 мин, понятное дело за вознаграждение, за это ему спасибо! Quote Link to post Share on other sites
partizzzzzan Posted December 19, 2013 Report Share Posted December 19, 2013 Думаю данное решение нужно бы включить в дистрибутив SImpla Quote Link to post Share on other sites
Reni Posted January 13, 2014 Report Share Posted January 13, 2014 (edited) Данный модуль работает на 2.2.4? Все сделал в точности как в описании, но даже в админке ничего не появилось. Все, разобрался... Если у вас версия 2.1.5 и ниже, пропустите этот шаг, и переходите к настройке базы данных Откройте файл api/Managers.php и добавьте Хоть у меня и 2.2.4 но я решил не пропускать этот шаг и все заработало) Почему то сначала загружается сайт, и спустя некоторое время подгружается слайдер. Это его особенность или я что-то не так сделал? Edited January 13, 2014 by Reni Quote Link to post Share on other sites
Mike Posted January 13, 2014 Report Share Posted January 13, 2014 Спасибо за слайдер, очень круто сделано! Поставил сразу, с первого раза удачно. Quote Link to post Share on other sites
venDETTa Posted January 24, 2014 Report Share Posted January 24, 2014 Почему то сначала загружается сайт, и спустя некоторое время подгружается слайдер. Это его особенность или я что-то не так сделал? Таже фигня и это не комильфо, надо как-то пофиксить это Quote Link to post Share on other sites
chocolate_moles Posted January 24, 2014 Author Report Share Posted January 24, 2014 Таже фигня и это не комильфо, надо как-то пофиксить это Нужно выставить высоту контейнера в файле slider/css/nivo-slider.css .nivoSlider { position:relative; width:100%; height:auto; overflow: hidden; height: 350px; // Высота равна высоте ваших изображений} Quote Link to post Share on other sites
nitrol Posted January 25, 2014 Report Share Posted January 25, 2014 у меня после внесения изменения из апдейта перестали на сайте отображаться. в коде страницы <div id="content"> <h1>Главная</h1> <script src="slider/js/jquery.nivo.slider.pack.js" type="text/javascript"></script> <link rel="stylesheet" href="slider/css/nivo-slider.css" type="text/css" media="screen"> <link rel="stylesheet" href="slider/css/themes/default/default.css" type="text/css" media="screen"> <div id="slide_1" class="nivo-html-caption"> 123123 </div> <div id="slide_2" class="nivo-html-caption"> kfrf[jcn </div> <script type="text/javascript"> $(window).load(function() { $('#slider').nivoSlider({ pauseTime: 5000 }); }); </script> подскажите что не так? буд-то они постоянно стали скрытыми разобрался, не там обернул проверку в тпл шаблоне Quote Link to post Share on other sites
venDETTa Posted January 26, 2014 Report Share Posted January 26, 2014 Нужно выставить высоту контейнера в файле slider/css/nivo-slider.css это конечно понятно, фишка в том что происходит инициализация слайдера и это занимает время. В это время должна отображаться первая картинка, а сейчас только после инициализации скрипта появляется первая картинка. Quote Link to post Share on other sites
Noxter Posted January 26, 2014 Report Share Posted January 26, 2014 это конечно понятно, фишка в том что происходит инициализация слайдера и это занимает время. В это время должна отображаться первая картинка, а сейчас только после инициализации скрипта появляется первая картинка.Картинка появляется после инициализации слайдера. Quote Link to post Share on other sites
Noxter Posted January 26, 2014 Report Share Posted January 26, 2014 Нашел один баг в модуле.В функции удаления изображения api/Slides.php строка 126: @unlink($this->config->root_dir.$filename); ссылается на неверный путь к картинке, возможно нужно поправить на: @unlink($this->config->root_dir.$this->config->slides_images_dir.$filename); Иначе после удаления слайда сама картинка не удалится с папки и будет там лежать занимая место. Quote Link to post Share on other sites
Noxter Posted January 26, 2014 Report Share Posted January 26, 2014 Еще один баг.Если в админке на странице слайдов выбрать и удалить слайды, то с БД записи о слайдах пропадут но не сотрутся картинки с папки слайдов.Все из-за того что при удалении выполняется функция delete_slide (файл simpla/SlidesAdmin.php строка 22), но не выполняется функция удаления изображения с папки слайдов (delete_image). Советую и это поправить.P.S. Удивляет что за 4 месяца никто этих ошибок не заметил, просмотрев код 2 минуты это сделал я Quote Link to post Share on other sites
chocolate_moles Posted January 27, 2014 Author Report Share Posted January 27, 2014 У меня все удаляется, только что проверил на чистой симпле. Возможно проблема в индивидуальных настройках, пути или имени файла. Quote Link to post Share on other sites
Noxter Posted January 27, 2014 Report Share Posted January 27, 2014 У меня все удаляется, только что проверил на чистой симпле. Возможно проблема в индивидуальных настройках, пути или имени файла.Как это так если код неправильный? странно, проверю у себя и отпишусь. Quote Link to post Share on other sites
chocolate_moles Posted January 27, 2014 Author Report Share Posted January 27, 2014 Как это так если код неправильный? странно, проверю у себя и отпишусь. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.