• Страница 1 из 1
  • 1
Делаем автоматический слайдер контента, новостей, под информ
uSefuL
Offline
Дата: Вт, 20.12.2011, 20:39 | Сообщение # 1

Специалист Iucoz.Ru
Пользователь
Постов: 33
Ну... не то что бы он не будет работать без информера, ヅ, просто ориентировка этого поста будет направлена именно под скрипт слайдера плюс информер.За основу - взял плагин «Cycle Through a List» от By Charles Harvey. В сети очень много подобных скриптов, но этот мне понравился своей простотой, лаконичностью и лёгкостью кода. Это не «Featured Content Slider» или «Coda Slider», которые, несомненно, имеют больше настроек и возможностей, но и весят в десятки, если не в сотни, раз больше. Выбор - всегда за вами. Помните об этом.

В данном скрипте есть: автоматическая смена контента и регулировка/установка времени показа. В данном случае - мне больше ничего не нужно и не вижу смысла в навороченных по функционалу и настройкам более продвинутых фреймворках (Frameworks).

Приступим.

Для работы скрипта, а, следовательно и всего слайдера, нам/вам понадобится подключённая к странице/сайту библиотека jQuery версии не ниже v1.3.2. Как я уже где-то писал, но повторюсь: "Если у вас сайт на хостинге юКоз, и вы не совершали никаких действий по отключению скрипта - он у вас есть, так как подключён по умолчанию.”. Это, тот самый, скрипт «u.js» - который включает в себя эту библиотеку.
Наверно вступление опущу, сразу код.
HTML-каркас будующего блока:
Code
<ul class="newsCont" id="newsCont1">  
<!--Start(InformerCont)-->  
   <!--Здесь будет контент, который будет динамически вставлять информер-->  
<!--End(InformerCont)-->  
</ul>


Как видно из кода - все просто до невозможности.
В блок, в котором ожидаем показывать контент, просто вставляем ненумерованный список без элементов. Элементы, то есть «li» - будет подставлять информер.

Идем в ПУ (здесь и далее - панель управления сайтом.) Главная » Информеры и создаём информер, например ... ну, давайте - Новости » Материалы в случайном порядке. Вы, естественно, можете выбрать другое.




Теперь создадим содержание для нашего информера.

Выглядеть оно будет примерно вот так:

Шаблон информера.
Code
<li>  
<h4><a title="$TITLE$«?if($CATEGORY_NAME$)?» [Категория «$CATEGORY_NAME$»]«?endif?»" href="$ENTRY_URL$">«?substr($TITLE$,0,25)?»...</a></h4>  
«?if($IMG_SMALL_URL1$)?»  
<img class="prev" style="width:120px;" src="$IMG_SMALL_URL1$" alt="$TITLE$" />«?else?»«?if($IMG_URL1$)?»<img class="prev" style="width:120px;" src="$IMG_URL1$" alt="$TITLE$" />«?endif?»«?endif?»  
$MESSAGE$  
«?if($CATEGORY_NAME$)?»<span class="inf">[<a href="$CATEGORY_URL$">«?substr($CATEGORY_NAME$,0,25)?»...</a>]</span>«?endif?»  
</li>


Где:
Code
«?if($CATEGORY_NAME$)?» - проверяем, есть ли у данной новости категория, и, если есть - записываем её в титле..  
«?substr($TITLE$,0,25)?» - ограничиваем количество символов в названии новости. В данном случае - 25. От «0», количеством «25».  
«?if($IMG_SMALL_URL1$)?» - Проверяем наличие маленькой картинки, если есть - выводим в новость. Если нет («?else?»), проверяем наличие «большой» («?if($IMG_URL1$)?), если есть большая - выводим, если нет - ничего не делаем («?endif?»«?endif?»)  
«?if($CATEGORY_NAME$)?»<span class="inf"> - проверяем наличие категории, и, если есть, выводим ссылку в неё, которую тоже ограничиваем в количестве символов («?substr($CATEGORY_NAME$,0,25)?»).


писал(а):
Не забываем, при копировании кода, заменять « на < и вот это » на вот это > ... Движок парсит «?if(....)?» ... ヅ.

Оформлять контент нашего слайдера я буду при помощи CSS, которую затем буду подключать на страницы с информером. Можно прямо из скрипта, или вместе со скриптом. Позже покажу как.

Итак, стили для контента.
Code
<style type="text/css">  
/* StartStyle */  
ul.newsCont,ul.newsCont li,ul.newsCont *{  
font: 11px/1 Verdana,sans-serif; /* прописываем для любых элементов общий фонт. */  
list-style:none;  
background-image:none;  
margin:0; /* убираем все возможные отступы и поля в контенте  */  
padding:0;  
}  
ul.newsCont{  
width:200px; /* указываем фиксированную ширину. */  
border:1px solid #CCC;  
position:relative; /* задаём позиционирование */  
overflow:hidden; /* задаём поведение блока при переполнении */  
height:200px; /* указываем высоту */  
text-align:left;  
}  
ul.newsCont li{  
padding:3px 2px;  
opacity:0;  
display:none; /* скрываем контент */  
position:absolute; /* задаём абсолютное позиционирование, относительно блока контента */  
}  
ul.newsCont p,ul.newsCont h4{  
margin-bottom:3px; /* отступы для заголовков и параграфов */  
}  
ul.newsCont h4 a{  
font: bold 11px/1 Georgia,serif; /* перебиваем значение фонта по умолчанию для ссылок заголовков */  
}  
ul.newsCont h4:first-letter {  
vertical-align:baseline;color:#C03; /* буквица для заголовков */  
}  
ul.newsCont .inf{  
position:absolute; /* задаём позиционирование для блока дополнительной информации */  
top:187px;right:1px; /* вычисляется от высоты блока контента */  
text-align:right; /* выравнивание текста в блоке */  
float:right; /* для оперы ... ヅ */  
background:#FFF; /* задаём белый фон, для удобства чтения/восприятия */  
font-size:10px;  
color:777;  
padding:1px 3px 2px; /* задаём поля, для удобства чтения/восприятия */  
}  
ul.newsCont img.prev{  
max-height:120px!important; /* ограничиваем максимальные размеры картинки в контенте. На всякий... */  
max-width:120px!important;  
border:solid 1px #ddd; /* немного оформления ... */  
float:left; /* положение относительно текста - картинка - слева, текст справа ヅ */  
margin-right:5px;  
padding:3px;  
}  
/* EndStyle */  
</style>


Ну и, наконец, сам скрипт.
Code
(function($){  
$.cycleThru={defaults:{delay:3000}};  
$.fn.extend({cycleThru:function(config){  
var config=$.extend({},$.cycleThru.defaults,config);  
return this.each(function(){  
var delay = config.delay;  
var ulid = $(this).attr("id");  
var el=0;  
var elmax=$(this).children("li").hide().length-1;  
function cyclee(){  
$("ul#"+ulid+" li:eq("+el+")").show()  
.animate({"opacity":"1"}, 400)  
.animate({"opacity":"1"}, delay)  
.animate({"opacity":"0"}, 400,function(){  
(el==elmax)?el=0:el++;  
cyclee();  
});  
};  
cyclee();  
})  
}  
})  
})(jQuery);


Скрипт вызова функции:

Code
<script type="text/javascript">  
$("ul#newsCont1").cycleThru({delay:6000});  
</script>


Остановлюсь на некоторых моментах:
.animate({"opacity":"1"} ,400) - переход от полной прозрачности (opacity:0) до полной непрозрачности (opacity:1) за промежуток времени 400 миллисекунд. Можно прописать свои значения. Влияет на скорость/время отображения скрытого контента. Смены.
.animate({"opacity":"1"}, delay) - тайм-аут - указываем при вызове (.cycleThru({delay:6000})). Значения в миллисекундах. Влияет на время отображения контента.
.animate({"opacity":"0"}, 400 - переход от полной непрозрачности (opacity:1) до полной прозрачности (opacity:0) - скрытие. Число «400» - влияет на скорость/время скрытия контента.
$("ul#newsCont1").cycleThru({delay:6000}); - вызов функции. Передаём значения таймингов показа (delay:6000) и ID блока контента к которому применяем функцию. В данном вызове - к блоку с идентификатором «newsCont1». Должна находится ниже блока.

Если на странице больше одного блока со слайд-контентом - у каждого из них должны быть оригинальные ID !!!
У каждого блока - свой.
Например:
Code
ul#newsCont1 и ul#newsCont2 и так далее.  
Соответственно к каждому - своя функция вызова.  
Например:  
К первому  
<script type="text/javascript">  
$("ul#newsCont1").cycleThru({delay:6000});  
</script>  
и ко второму  
<script type="text/javascript">  
$("ul#newsCont2").cycleThru({delay:6000});  
</script>


Если все сделано более-мене правильно, должно́ получится что-то вроде вот этого ...


  • Страница 1 из 1
  • 1
Поиск:

Дизайн принадлежит администратору сайта.
Любое копирование дизайна без ведома администрации,
запрещено и карается блокировкой ресурса в системе Ucoz
Design by De7 | Imposition: KeNtOk | Используются технологии uCoz
Поисковый анализ сайта