Jump to content

Recommended Posts

Модуль управления слайдером через панель администратора

  • Добавление, удаление, изменение очередности слайдов через админку
  • Добавление ссылок и описания
  • Адаптивыный слайдер Nivo Slider
  • Подробная инструкция по установке

post-1016-0-79546400-1380450915_thumb.jpgpost-1016-0-30067300-1380450935_thumb.jpgpost-1016-0-95935500-1380450942_thumb.jpg

simplaSlider.rar

Edited by chocolate_moles
Link to post
Share on other sites
  • Replies 170
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

ДОПОЛНЕНИЕ   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, в эт

Posted Images

ДОПОЛНЕНИЕ

 

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;
}

Теперь есть возможность выключать/включать картинку

Link to post
Share on other sites
  • 1 month later...

возникло несколько вопросов по Дополнению:
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}
 

тоже не ясно куда это записывать.

Лампочки на слайдах появились - имитируют работу, выпадающий список предлагает сделать слайды видимым/невидимым, но они не отключаются. Подозреваю не туда визибл с выводом картинок вставил.

Link to post
Share on other sites

Тут 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() {
Так понятнее ?   
Link to post
Share on other sites

Второй пункт правильно!

 

В пятом пункте нужно обернуть в файле /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}
Link to post
Share on other sites
  • 3 weeks later...

А зачем делать проверку в шаблоне условием {if $s->visible} если можно сразу в функции выбора слайдов это сделать, т.е. в api?

 

В админке ведь нужно отображать и выключенные слайды

 

PS Было бы хорошо поставить ресайзер... ну или могу сам накатать "дополнение"

Link to post
Share on other sites

В админке ведь нужно отображать и выключенные слайды

 

PS Было бы хорошо поставить ресайзер... ну или могу сам накатать "дополнение"

Ну а в чем проблема использовать фильтр т.е. $filter['visible']?

Link to post
Share on other sites
  • 3 weeks later...

Если в друг кто то неумеет самостоятельно устанавливать, обращайтесь к автору chocolate_moles

Я сам несмог поставить, мучался день (безрукий)

chocolate_moles установил все за 15 мин, понятное дело за вознаграждение, за это ему спасибо!

Link to post
Share on other sites
  • 4 weeks later...

Данный модуль работает на 2.2.4? Все сделал в точности как в описании, но даже в админке ничего не появилось.

 

 

 

Все, разобрался...

 

Если у вас версия 2.1.5 и ниже, пропустите этот шаг, и переходите к настройке базы данных

Откройте файл api/Managers.php и добавьте

Хоть у меня и 2.2.4 но я решил не пропускать этот шаг и все заработало)

 

 

Почему то сначала загружается сайт, и спустя некоторое время подгружается слайдер. Это его особенность или я что-то не так сделал?

Edited by Reni
Link to post
Share on other sites
  • 2 weeks later...

Почему то сначала загружается сайт, и спустя некоторое время подгружается слайдер. Это его особенность или я что-то не так сделал?

 

Таже фигня и это не комильфо, надо как-то пофиксить это

Link to post
Share on other sites

Таже фигня и это не комильфо, надо как-то пофиксить это

 

Нужно выставить высоту контейнера в файле slider/css/nivo-slider.css

 

.nivoSlider {

    position:relative;

    width:100%;

    height:auto;

    overflow: hidden;

    height: 350px; // Высота равна высоте ваших изображений

}

Link to post
Share on other sites

у меня после внесения изменения из апдейта перестали на сайте отображаться. в коде страницы 

<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>


подскажите что не так? буд-то они постоянно стали скрытыми

 

разобрался, не там обернул проверку в тпл шаблоне

Link to post
Share on other sites

 

Нужно выставить высоту контейнера в файле slider/css/nivo-slider.css

 

это конечно понятно, фишка в том что происходит инициализация слайдера и это занимает время. В это время должна отображаться первая картинка, а сейчас только после инициализации скрипта появляется первая картинка.

Link to post
Share on other sites

это конечно понятно, фишка в том что происходит инициализация слайдера и это занимает время. В это время должна отображаться первая картинка, а сейчас только после инициализации скрипта появляется первая картинка.

Картинка появляется после инициализации слайдера.
Link to post
Share on other sites

Нашел один баг в модуле.

В функции удаления изображения api/Slides.php строка 126:

@unlink($this->config->root_dir.$filename);
ссылается на неверный путь к картинке, возможно нужно поправить на:
@unlink($this->config->root_dir.$this->config->slides_images_dir.$filename);
Иначе после удаления слайда сама картинка не удалится с папки и будет там лежать занимая место.
Link to post
Share on other sites

Еще один баг.
Если в админке на странице слайдов выбрать и удалить слайды, то с БД записи о слайдах пропадут но не сотрутся картинки с папки слайдов.
Все из-за того что при удалении выполняется функция delete_slide (файл simpla/SlidesAdmin.php строка 22), но не выполняется функция удаления изображения с папки слайдов (delete_image). Советую и это поправить.
P.S. Удивляет что за 4 месяца никто этих ошибок не заметил, просмотрев код 2 минуты это сделал я  :)

Link to post
Share on other sites

У меня все удаляется, только что проверил на чистой симпле. Возможно проблема в индивидуальных настройках, пути или имени файла.

Как это так если код неправильный? странно, проверю у себя и отпишусь.
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...