Всем привет. Довольно часто встречал сообщения о прокрутке материалов в модуле JBZoo items, поэтому и решил сделать данный рецепт. Полученный результат виден на изображении:
-=Поехали=-
Не выбирал долго я jQuery плагин и остановился, на мой взляд достаточно хорошем плагине jCarousel
1.1 Переходим в папку модуля
сайт\modules\mod_jbzoo_item
создаем нужные файлы и папки - показал на скриншоте
Картинку с изображениями прикрепляю
2.1 Добавляем параметры
Открываем файл:
сайт\modules\mod_jbzoo_item\mod_jbzoo_item.xml
и заменяем содержимое на:
<?xml version="1.0" encoding="utf-8"?>
<!--
JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
@package jbzoo
@version 2.x Pro
@author JBZoo App http://jbzoo.com
@copyright Copyright (C) JBZoo.com, All rights reserved.
@license http://jbzoo.com/license JBZoo Licence
@coder Vitaliy Yanovskiy <joejoker@jbzoo.com>
@coder Alexander Oganov <t_tapak@yahoo.com>
-->
<extension type="module" version="2.5" method="upgrade" client="site">
<name>JBZoo Item</name>
<author>JBZoo.com</author>
<creationDate>2014 08</creationDate>
<copyright>Copyright (C) JBZoo.com, All rights reserved.</copyright>
<authorEmail>admin@jbzoo.com</authorEmail>
<authorUrl>http://jbzoo.com</authorUrl>
<version>2.1.5 Pro</version>
<updateUrl>http://server.jbzoo.com/checkupdates</updateUrl>
<license>http://jbzoo.com/license JBZoo Licence</license>
<description>JBZOO_ITEM_MODULE_DESCRIPTION</description>
<files>
<filename module="mod_jbzoo_item">mod_jbzoo_item.php</filename>
<filename>helper.php</filename>
<filename>index.html</filename>
<folder>types</folder>
<folder>renderer</folder>
<folder>tmpl</folder>
</files>
<config>
<fields name="params">
<fieldset name="basic" addfieldpath="/media/zoo/applications/jbuniversal/joomla/fields">
<field name="moduleclass_sfx"
type="text"
default=""
label="JBZOO_MODULE_SFX"
description="JBZOO_MODULE_SFX_DESC"/>
<field name="layout"
type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
<field name="item_layout"
type="jbfilename"
default="default"
label="JBZOO_MODITEM_LAYOUT_ITEM"
description="JBZOO_MODITEM_LAYOUT_ITEM_DESC"
path="/modules/mod_jbzoo_item/renderer/item/" ext="php"/>
<field name="cache" type="hidden" default="0"/>
<field name="owncache" type="hidden" default="0"/>
<field name="cache_time" type="hidden" default="0"/>
<field name="cachemode" type="hidden" default="itemid"/>
</fieldset>
<fieldset name="base" label="JBZOO_MODITEM_BASE">
<field name="mode"
type="list"
default="conditions"
label="JBZOO_MODITEM_MODE"
description="JBZOO_MODITEM_MODE_DESC">
<option value="conditions">JBZOO_MODITEM_FILTER</option>
<option value="viewed">JBZOO_MODITEM_RECENTLY_VIEWED</option>
</field>
<field name="@group-conditions"
type="jbdelimiter"
default="JBZOO_MODITEM_FILTER_LABEL"
group="conditions" />
<field name="condition_app"
type="jbapplist"
default=""
label="JBZOO_MODITEM_APPLICATIONS"
description="JBZOO_MODITEM_APPLICATIONS_DESC"
multiple="0"
headhide="1"/>
<field name="condition_type"
type="jbtype"
default=""
label="JBZOO_MODITEM_TYPES"
description="JBZOO_MODITEM_TYPES_DESC"
multiple="0"
headhide="1"/>
<field name="logic"
type="radio"
default="and"
label="JBZOO_MODITEM_LOGIC"
description="JBZOO_MODITEM_LOGIC_DESC">
<option value="or">JBZOO_MODITEM_LOGIC_OR</option>
<option value="and">JBZOO_MODITEM_LOGIC_AND</option>
</field>
<field name="type_search"
type="radio"
default="1"
label="JBZOO_MODITEM_TYPE_SEARCH"
description="JBZOO_MODITEM_TYPE_SEARCH_DESC">
<option value="0">JBZOO_MODITEM_TYPE_SEARCH_FULL</option>
<option value="1">JBZOO_MODITEM_TYPE_SEARCH_DOTTED</option>
</field>
<field name="conditions"
type="jbkeyvalue"
default=""
label="JBZOO_MODITEM_CONDITIONS"
description="JBZOO_MODITEM_CONDITIONS_DESC"/>
<field name="@group-viewed"
type="jbdelimiter"
default="JBZOO_MODITEM_RECENTLY_VIEWED"
group="viewed" />
<field type="jbtype"
name="recently_type"
description="JBZOO_MODITEM_TYPES_DESC"
label="JBZOO_MODITEM_TYPES"
default=""
headhide="1"
multiple="1"/>
<field name="delete"
type="radio"
default="1"
label="JBZOO_MODITEM_RECENTLY_VIEWED_DELETE_LABEL"
description="JBZOO_MODITEM_RECENTLY_VIEWED_DELETE_DESC">
<option value="0">JBZOO_NO</option>
<option value="1">JBZOO_YES</option>
</field>
<field name="@group-close"
type="jbdelimiter"
default="JBZOO_MODITEM_BASIC_OPTIONS"
group="close" />
<field name="order_default"
type="jbitemorderadv"
default=""
label="JBZOO_MODITEM_ORDER_DEFAULT"
description="JBZOO_MODITEM_ORDER_DEFAULT_DESC"/>
<field name="pages"
type="text"
default="20"
label="JBZOO_MODITEM_PAGES"
description="JBZOO_MODITEM_PAGES_DESC"/>
</fieldset>
<fieldset name="template" label="JBZOO_MODITEM_TEMPLATE">
<field name="item_cols"
type="list"
default="1"
label="JBZOO_MODITEM_COLS"
description="JBZOO_MODITEM_COLS_DESC">
<option value="0">JBZOO_MODITEM_NO_TEMPLATE</option>
<option value="1">JBZOO_NUMBERS_1</option>
<option value="2">JBZOO_NUMBERS_2</option>
<option value="3">JBZOO_NUMBERS_3</option>
<option value="4">JBZOO_NUMBERS_4</option>
<option value="5">JBZOO_NUMBERS_5</option>
<option value="6">JBZOO_NUMBERS_6</option>
</field>
<field name="display_border"
type="jbbool"
default="1"
label="JBZOO_MODITEM_DISPLAY_BORDER"
description="JBZOO_MODITEM_DISPLAY_BORDER_DESC"/>
<field name="items_image_align"
type="list"
default="left"
label="JBZOO_MODITEM_ITEMS_IMAGE_ALIGN"
description="JBZOO_MODITEM_ITEMS_IMAGE_ALIGN_DESC">
<option value="none">JBZOO_MODITEM_IMAGE_ALIGN_NONE</option>
<option value="left">JBZOO_MODITEM_IMAGE_ALIGN_LEFT</option>
<option value="right">JBZOO_MODITEM_IMAGE_ALIGN_RIGHT</option>
<option value="center">JBZOO_MODITEM_IMAGE_ALIGN_CENTER</option>
</field>
<field name="column_heightfix"
type="jbbool"
default="0"
label="JBZOO_MODITEM_COLUMN_HEIGHTFIX"
description="JBZOO_MODITEM_COLUMN_HEIGHTFIX_DESC"/>
</fieldset>
<fieldset name="template-jcarusel" label="Шаблон jCarousel">
<field name="jc_width"
type="text"
filter="int"
default="200"
label="Ширина"
description="Ширина блока"/>
<field name="jc_step"
type="text"
filter="int"
default="1"
label="Шаг"
description="Шаг прокрутки"/>
<field name="jc_auto"
type="radio"
class="btn-group btn-group-yesno"
default="0"
label="Авто прокрутка"
description=""
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="jc_interval"
type="text"
filter="int"
default="1"
label="Задержка прокрутки (сек)"
description=""/>
</fieldset>
</fields>
</config>
</extension>
2.2 Добавляем содержимое в нужные файлы:
В файл carousel.css
сайт\modules\mod_jbzoo_item\assets\css\carousel.css
Добавляем следующие стили:
.jcarousel {
position: relative;
overflow: hidden;
}
.jcarousel ul {
width: 20000em;
position: relative;
list-style: none;
margin: 0;
padding: 0;
}
.jcarousel li {
float: left;
text-align: center;
}
.jcarousel li.rborder {
margin-right: 10px;
}
.jcarousel .wrapper-item-carousel {
padding: 6px;
}
.jcarousel .jcarousel-control {
display: block;
position: absolute;
z-index: 2;
top: 50%;
width: 50px;
height: 50px;
margin-top: -25px;
background: url("../img/buttons.png") no-repeat;
}
.jcarousel .jcarousel-control.prev {
background-position: 0 100%;
}
.jcarousel .jcarousel-control.next {
right: 0;
}
Переносим картику в папку img и называем ее buttons.png
Далее ложим файл jquery.jcarousel.js в
сайт\modules\mod_jbzoo_item\assets\js\jcarousel\jquery.jcarousel.js
jquery.jcarousel.js 16.94К
246 Количество загрузок:
В файл carousel.php который расположен в
сайт\modules\mod_jbzoo_item\renderer\item\carousel.php
Вставляем следующий код
<?php
/**
* JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
*
* @package jbzoo
* @version 2.x Pro
* @author JBZoo App http://jbzoo.com
* @copyright Copyright (C) JBZoo.com, All rights reserved.
* @license http://jbzoo.com/license-pro.php JBZoo Licence
* @coder Vitaliy Yanovskiy <joejoker@jbzoo.com>
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
?>
<div class="wrapper-item-carousel">
<?php if ($this->checkPosition('image')) : ?>
<div class="item-image align-<?php echo $params->get('items_image_align', 'left') ?>">
<?php echo $this->renderPosition('image'); ?>
</div>
<?php endif; ?>
<?php if ($this->checkPosition('title') || $this->checkPosition('price')) : ?>
<div class="item-wrapper-desc">
<?php if ($this->checkPosition('title')) : ?>
<div class="item-title"><?php echo $this->renderPosition('title'); ?></div>
<?php endif; ?>
<?php if ($this->checkPosition('price')) : ?>
<div class="item-price"><?php echo $this->renderPosition('price'); ?></div>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
Тут определены на вывод 3 позиции которые указываем в файле
сайт\modules\mod_jbzoo_item\renderer\item\positions.xml
Полное содержимое его имеет вид
<?xml version="1.0" encoding="utf-8"?>
<!--
JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
@package jbzoo
@version 2.x Pro
@author JBZoo App http://jbzoo.com
@copyright Copyright (C) JBZoo.com, All rights reserved.
@license http://jbzoo.com/license-pro.php JBZoo Licence
@coder Vitaliy Yanovskiy <joejoker@jbzoo.com>
-->
<renderer>
<positions layout="default">
<position name="image">Image</position>
<position name="title">Title</position>
<position name="price">Price</position>
<position name="description">Description</position>
<position name="properties">Properties</position>
<position name="links">Links</position>
</positions>
<!--Позции для нового шаблона-->
<positions layout="carousel">
<position name="image">Image</position>
<position name="title">Title</position>
<position name="price">Price</position>
</positions>
<!-- -->
<positions layout="table">
<position name="cell1">Table cell #1</position>
<position name="cell2">Table cell #2</position>
<position name="cell3">Table cell #3</position>
<position name="cell4">Table cell #4</position>
<position name="cell5">Table cell #5</position>
</positions>
</renderer>
Так же нужно сказать ZOO что у нас есть новый шаблон в файле metadata.xml он расположен в тойже папке где файл с позициями. Теперь файл имеет вид
<?xml version="1.0" encoding="utf-8"?>
<!--
JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
@package jbzoo
@version 2.x Pro
@author JBZoo App http://jbzoo.com
@copyright Copyright (C) JBZoo.com, All rights reserved.
@license http://jbzoo.com/license-pro.php JBZoo Licence
@coder Vitaliy Yanovskiy <joejoker@jbzoo.com>
-->
<metadata>
<layout name="default">
<name>Default</name>
<description>This is the default layout to render jbzoo items module themes</description>
</layout>
<layout name="table">
<name>Table</name>
<description>This is the table layout to render jbzoo items module themes</description>
</layout>
<!--Добавили новый шаблон-->
<layout name="carousel">
<name>Carousel</name>
<description>This is the table carousel to render jbzoo items module themes</description>
</layout>
<!-- -->
</metadata>
сайт\modules\mod_jbzoo_item\tmpl\carousel.php
<?php
/**
* JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
*
* @package jbzoo
* @version 2.x Pro
* @author JBZoo App http://jbzoo.com
* @copyright Copyright (C) JBZoo.com, All rights reserved.
* @license http://jbzoo.com/license-pro.php JBZoo Licence
* @coder Vitaliy Yanovskiy <joejoker@jbzoo.com>
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
$zoo->document->addScript('mod_jbzoo_item:assets/js/jcarousel/jquery.jcarousel.js');
$zoo->document->addStylesheet('mod_jbzoo_item:assets/css/carousel.css');
$count = count($items);
$columns = (int)$params->get('item_cols', 1);
$border = (int)$params->get('display_border', 1) ? 'rborder' : '';
$jCWidth = (int)$params->get('jc_width', 200);
$jCStep = (int)$params->get('jc_step', 1);
$jCInterval = (int)$params->get('jc_interval', 1);
?>
<style type="text/css">
#<?php echo $unique; ?> li{
width: <?php echo $jCWidth; ?>px ;
}
</style>
<script type="text/javascript">
jQuery(function($){
$('.jcarousel').jcarousel({}).on('jcarouselautoscroll:destroyend', function() {
alert('p');
});;
<?php if ((int)$params->get('jc_auto', 0)) : ?>
$('.jcarousel').jcarouselAutoscroll({
interval: <?php echo $jCInterval * 1000; ?>,
target: '+=<?php echo $jCStep; ?>',
autostart: true
});
<?php endif; ?>
$('#<?php echo $unique; ?> .prev')
.on('jcarouselcontrol:active', function() {
$(this).removeClass('inactive');
})
.on('jcarouselcontrol:inactive', function() {
$(this).addClass('inactive');
})
.jcarouselControl({
// Options go here
target: '-=<?php echo $jCStep; ?>'
});
$('#<?php echo $unique; ?> .next')
.on('jcarouselcontrol:active', function() {
$(this).removeClass('inactive');
})
.on('jcarouselcontrol:inactive', function() {
$(this).addClass('inactive');
})
.jcarouselControl({
// Options go here
target: '+=<?php echo $jCStep; ?>'
});
});
</script>
<?php
if ($count) {
echo '<div id="' . $unique . '" class="jbzoo yoo-zoo jcarousel-wrapper">';
echo '<div class="jcarousel">';
echo '<ul class="module-items jbzoo-rborder module-items-col-' . $columns . '">';
if ($params->get('delete') && $params->get('mode') == 'viewed') {
echo '<a href="index.php?option=com_zoo&controller=viewed&task=clear&format=raw" class="jsRecentlyViewedClear recently-viewed-clear">' . JText::_('JBZOO_MODITEM_DELETE') . '</a>';
}
if ($columns) {
$j = 0;
foreach ($items as $item) {
$app_id = $item->application_id;
$j++;
$isLast = $j % $columns == 0;
echo '<li class="' . $border . '">';
echo $renderer->render('item.' . $params->get('item_layout', 'default'),
array(
'item' => $item,
'params' => $params
)
);
echo '</li>';
}
} else {
foreach ($items as $item) {
$app_id = $item->application_id;
echo $renderer->render('item.' . $params->get('item_layout', 'default'),
array(
'item' => $item,
'params' => $params
)
);
}
}
echo '</ul>';
echo '<a href="#" class="jcarousel-control prev"></a>' .
'<a href="#" class="jcarousel-control next"></a>';
echo '</div></div>';
if ($params->get('delete') && $params->get('mode') == 'viewed') : ?>
<script type="text/javascript">
jQuery(document).ready(function ($) {
$('#<?php echo $unique; ?>').JBZooViewed({
'message': '<?php echo JText::_('JBZOO_MODITEM_RECENTLY_VIEWED_DELETE_HISTORY'); ?>',
'app_id' : <?php echo $app_id; ?>
});
});
</script>
<?php endif; ?>
<?php if ($params->get('column_heightfix')) : ?>
<script type="text/javascript">
jQuery(document).ready(function ($) {
$('.module-items').JBZooHeightFix();
});
</script>
<?php endif;
}
Теперь можно перейти в настройки модуля и увидинь новую вкладку с параметрами для карусели изображений
Оставляем как есть или устанавливаем свои параметры
Выбираем наши шаблоны
Выводим модуль в позиции и проверяем. Если все сделали правильно - должно работать
mod_jbzoo_item(carousel_patch).zip 13.91К
318 Количество загрузок:
Сообщение отредактировал Cheren-dow: 17 March 2015 - 17:59













