Всем привет. Довольно часто встречал сообщения о прокрутке материалов в модуле JBZoo items, поэтому и решил сделать данный рецепт. Полученный результат виден на изображении:
-=Поехали=-
Не выбирал долго я jQuery плагин и остановился, на мой взляд достаточно хорошем плагине jCarousel
1.1 Переходим в папку модуля
создаем нужные файлы и папки - показал на скриншоте
Картинку с изображениями прикрепляю
2.1 Добавляем параметры
Открываем файл:
и заменяем содержимое на:
- <?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
Добавляем следующие стили:
- .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 в
jquery.jcarousel.js 16.94К
213 Количество загрузок:
В файл 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 позиции которые указываем в файле
Полное содержимое его имеет вид
- <?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>
- <?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К
289 Количество загрузок:
Сообщение отредактировал Cheren-dow: 17 March 2015 - 17:59