Карусулька с автопрокруткой Демо - блоки справа
Эффект карусельки на JavaScript, автоматически прокручивающий элементы (товары, в моем случае) в блоке. Код очень прост, достаточно:
1 Скачать и установить jQuery
Закачали скрипт в папку js на хостинге и отредактировали Основной макет:
2 Отредактировать шаблон, где у вас находится блок. Курсив - скрипт прокрутки, жирный - параметры. В скрипте - сколько выводится, в вызове - сколько всего будет их. Мой вызов подтягивает 5 товаров из магазина, скроллятся по 2 штуки.
return this.each(function () {
// 1. setup
// capture a cache of all the list items
// chomp the list down to limit li elements
var $list = $(this),
items = [], // uninitialised
currentItem = limit,
total = 0, // initialise later on
height = $list.find('> li:first').height();
// 2. effect
function spy() {
// insert a new item with opacity and height of zero
var $insert = $(items[currentItem]).css({
height : 0,
opacity : 0,
display : 'none'
}).prependTo($list);
// fade the LAST item out
$list.find('> li:last').animate({ opacity : 0}, 1000, function () {
// increase the height of the NEW first item
$insert.animate({ height : height }, 1000).animate({ opacity : 1 }, 1000);
// AND at the same time - decrease the height of the LAST item
// $(this).animate({ height : 0 }, 1000, function () {
// finally fade the first item in (and we can remove the last)
$(this).remove();
// });
});
currentItem++;
if (currentItem >= total) {
currentItem = 0;
}
3 Пойти в XSL шаблоны, найти ваш шаблон блока Присвоить вашему списку ul class="spy", а элементы должны быть в <li>. На всякий случай привожу пример шаблона:
<!-- Шаблон для товара -->
<xsl:template match="item">
<!-- Определяем цвет фона -->
<xsl:variable name="background_color">
<xsl:choose>
<xsl:when test="(position() + 1) mod 2 > 0">#f7f7f7</xsl:when>
<xsl:otherwise>#ffffff</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<li class="goods_column">
<!-- Изображения для товара, если есть -->
<xsl:if test="small_image!=''">
<a href="{/shop/path}{fullpath}{path}/">
<img src="{small_image}" align="top"/>
</a>
</xsl:if>
<!-- Ссылку на добавление в корзины выводим, если:
type = 0 - простой тип товара
type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
что означает неограниченное количество
<xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
<a href="{/shop/path}cart/?action=add&item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)">
<img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif"/>
</a>
</xsl:if> -->
</li>
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:param name="parent_group_id" select="/shop/@current_group_id"/>
<!-- ============================================================================================== -->
<!-- Если ID группы, для которой выводим список элементов, равен ID текущей группы - выводим жирным -->
<!-- ============================================================================================== -->
<xsl:if test="$parent_group_id=@id">
<a href="{/shop/path}{fullpath}">
<b>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</b>
</a>
</xsl:if>
Lightbox - увеличение картинок по клику.
Я уже приводил пример с highslide, но раз уж мы подключили jQuery, то будем использовать его по максимуму.
Найдено тут
Демо там же, либо на любой страничке товара на
Бедем считать что библиотеку jQuery мы уже подключили. Если нет - смотри выше.
Скачиваем по ссылке выше библиотеку, js и css кидаем в папку js, а images в images. В css я заменил путь "../images/" на "/images/" . Подключаем.
Все, если все пути верные, должно работать. Добавить rel="prettyPhoto" нужно ко всем картинкам, которые хотите залайтбоксить. Если хотите сделать перелистывание среди картинок на странице, то добавлять надо rel="prettyPhoto[gallery]". Также у скрипта есть темы и настройки. Если интересно, смотрите оригинал руководства.
Re: Используем jQuery для улучшения юзабилити сайта
"
Это вкладки, которые я делал для сайта , посмотреть можно там же.
Эффект, который реализован на главной странице, позволяющий хорошо экономить место за счет динамических табов, которые можно переключать и смотреть нужные группы товарав, их сортировки. Реализовано на jQuery.
Идем и скачаваем библиотеку jQuery, если она еще у вас не подключена. Копируем библиотеку, к примеру, в папку /js на хостинге.
Открываем макет сайта, в <head> вставляем вызов, где jquery-1.3.2.min.js — название скачанной выми библиотеки:
<script src="/js/jquery-1.3.2.min.js"></script>
<script>
// When the document loads do everything inside here …
$ (document).ready (function (){
// When a link is clicked
$ ( "a.tab").click (function () {
// switch all tabs off
$ (".active").removeClass ( "active");
// switch this tab on
$ (this).addClass ( "active");
// slide all content up
$ (".content").slideUp ();
// slide this content up
var content_show = $ (this).attr ( "title");
$ ("#"+content_show).slideDown ();
});
});
</script>
Далее, в макете или шаблоне страницы создадим нужную разметку:
Re: Используем jQuery для улучшения юзабилити сайта
Большое спасибо за примеры!
Не могли бы вы так же подробно описать, как вы сделали меняющиеся товары справа ("Обратите внимание"? Насколько большой там может быть выборка? И можно ли сделать их смену помедленнее?
Re: Re: Используем jQuery для улучшения юзабилити сайта
Обратите внимание - это просто рандомные товары. Пример есть на форуме. Выборку большой делать не стоит, потому что если скрипты у пользователя отключены, он получит длинный столбец. Проверьте в IE.
Смену можно. За это отвечает параметр interval = interval || 4000;
Re: Используем jQuery для улучшения юзабилити сайта
hell0men,
Спасибо, видимо не так задал вопрос, табы сделаны - не подскажете как вы вывели товар в несколько колонок и как правили шаблон блока с товаром?
Re: Используем jQuery для улучшения юзабилити сайта
hell0men,
Спасибо за Ваши ответы,но или глаз уже замылен или руки у меня из ж...) Куда я только не ставил ваш пример кода ( в 89.xsl шаблон - это ведь он отвечает за вывод на главной?) - не бьётся на колонки как у вас на сайте. Можете назвать строку кода или приложить полностью код шаблона?
Спасибо огромное заранее!