Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

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

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

simplaSlider.rar

Изменено пользователем chocolate_moles
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 170
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

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

Изображения в теме

chocolate_moles

 

Спасибо большое. Молодец!

 

Можно ещё добавить включение и выключение картинки, чтобы не удалять, а когда нужно включать!

Ссылка на сообщение
Поделиться на другие сайты

ДОПОЛНЕНИЕ

 

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

Тут 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() {
Так понятнее ?   
Ссылка на сообщение
Поделиться на другие сайты

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

 

В пятом пункте нужно обернуть в файле /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}
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

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

 

 

 

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

 

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

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

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

 

 

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

Изменено пользователем Reni
Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

.nivoSlider {

    position:relative;

    width:100%;

    height:auto;

    overflow: hidden;

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

}

Ссылка на сообщение
Поделиться на другие сайты

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

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


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

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

Картинка появляется после инициализации слайдера.
Ссылка на сообщение
Поделиться на другие сайты

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

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

@unlink($this->config->root_dir.$filename);
ссылается на неверный путь к картинке, возможно нужно поправить на:
@unlink($this->config->root_dir.$this->config->slides_images_dir.$filename);
Иначе после удаления слайда сама картинка не удалится с папки и будет там лежать занимая место.
Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

Как это так если код неправильный? странно, проверю у себя и отпишусь.
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...