Перейти к содержимому


Фотография
- - - - -

FancyBox для элемента цены JBColor

jbzoo 2.2 jbcolor рецепт

Сообщений в теме: 4

#1 Cheren-dow

Cheren-dow

Отправлено 21 June 2015 - 16:57

*
Популярное сообщение!

Что бы вывести изображение в popup от FancyBox необходимо проделать следующую работу:

 

1. Создать хелпер для вывода

В версии 220 удобно переопределять не только шаблоны элементов но так же создавать свои для шаблона. Итак в шаблоне создайте папку helpers а в нем файл popupcolor.php

\media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\helpers\popupcolor.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       Sergey Kalistratov <kalistratov.s.m@gmail.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * Class PopupColorHelper
 */
class PopupColorHelper extends JBHtmlHelper
{

    public function colors(
        $inputType = 'checkbox',
        $data,
        $name,
        $selected = null,
        $attrs = array(),
        $width = '26px',
        $height = '26px',
        $titles = array()
    )
    {
        $stringHelper = $this->_string;
        $jbstring     = $this->_jbstring;
        $jbcolor      = $this->app->jbcolor;

        $unique = $jbstring->getId('jbcolor-');

        $attrs['id']    = $unique;
        $attrs['class'] = 'jbzoo-colors';

        $html   = array();
        $html[] = '<div ' . $this->_buildAttrs($attrs) . '>';

        $i = 0;
        foreach ($data as $value => $color) {
            $isFile = false;
            if ($jbcolor->isFile($color)) {
                $isFile = $color;
            }

            $i++;
            $inputId   = $jbstring->getId('jbcolor-input-');
            $inputAttr = array(
                'type'  => $inputType,
                'name'  => $name,
                'id'    => $inputId,
                'title' => isset($titles[$value]) ? $titles[$value] : $value,
                'value' => $value,
                'class' => 'jbcolor-input'
            );

            $labelAttr = array(
                'for'   => $inputId,
                'title' => isset($titles[$value]) ? $titles[$value] : $value,
                'class' => array(
                    $inputType,
                    'jbcolor-label',
                    'value-' . $stringHelper->sluggify($value),
                    'hasTip'
                ),
                'style' => 'width:' . $width . ';height:' . $height . ';'
            );

            $attr = array(
                'style' => ' background-color: ' . (!$isFile ? '#' . $color . ';' : 'transparent; width:' . $width . ';height:' . $height . ';')
            );

            if ($selected != null && ($selected == $value || is_array($selected) && in_array($value, $selected))) {
                $inputAttr['checked'] = 'checked';
                $inputAttr['class'] .= ' checked';
            }

            $html[] = '<input ' . $this->_buildAttrs($inputAttr) . '/>';
            $html[] = '<label ' . $this->_buildAttrs($labelAttr) . '>';
            $html[] = ($isFile ? '<div class="checkIn" style="background: url(\'' . $isFile . '\') center;">' : '');

            $html[] = '<div ' . $this->_buildAttrs($attr) . '></div>';

            $html[] = ($isFile ? '</div>' : '') . '</label>';

            if ($isFile) {
                $popupAttrs = array(
                    'href'  => $isFile,
                    'class' => 'color-gallery',
                    'rel'   => 'gallery-' . $unique,
                    'title' => $labelAttr['title']
                );

                $html[] = '<a ' . $this->_buildAttrs($popupAttrs) . '>Посмотреть</a>';
            }

        }

        $html[] = '</div>';
        $html[] = $this->_assets->initJBColorHelper($unique, $inputType == 'checkbox' ? 1 : 0, true);

        $html[] = $this->app->jbassets->widget('#' . $unique . ' .color-gallery', 'fancybox', array(
            'helpers' => array(
                'title'   => array('type' => 'outside'),
                'buttons' => array('position' => "top"),
                'thumbs'  => array('width' => 80, 'height' => 80),
                'overlay' => array('locked' => false)
            )
        ), true);

        return implode(PHP_EOL, $html);
    }

}

 

2. Переопределяем шаблон 

Создаем файл в папке. Ее по умолчанию нет, поэтому создавайте вручную.

\media\zoo\applications\jbuniversal\templates\bootstrap\cart-elements\price\color\tmpl\color.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       Alexander Oganov <t_tapak@yahoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

echo $this->app->popupcolor->colors('radio', $dataColor, $name, $value, null, $width, $height);

Получаем следующий результат.

7pot_200x0.jpg

jh5e_200x0.jpg

 

ВНИМАНИЕ!!!

1.   Тестировалось на JBZoo 2.2.0 Pro.

2.   При следующих обновлениях эти изменения не должны пострадать.

3.   При появлении проблем Тех.Поддержка ответственности не несет. 


  • 7
Изображение
 

#2 isay777

isay777

Отправлено 21 June 2015 - 22:09

Чудесно работает - спасибо большое! 


Сообщение отредактировал isay777: 21 June 2015 - 22:11

  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#3 isay777

isay777

Отправлено 21 June 2015 - 22:20

Может кому-то пригодиться. 

Вот таким образом вывел еще и название цвета

$html[] = '<p class="namecolor">' . $labelAttr['title']. '</p>';

  • 4
ХОСТИНГ для сайтов jbzoo (все попугаи)

#4 Vseprosto

Vseprosto

Отправлено 20 December 2015 - 21:36

А как в этом шаблоне еще получить цену вариации? если используется JBZoo Price Calc т.е. например основная цена 10 а у вариации +15? Я имею ввиду вывести ее под самим изображением


Сообщение отредактировал Koder: 20 December 2015 - 21:38

  • 0

#5 Vseprosto

Vseprosto

Отправлено 21 December 2015 - 17:22

Или как хотябы получить номер вариации, что бы потом через допзапросы уже получить цену


  • 0





Темы с аналогичным тегами jbzoo 2.2, jbcolor, рецепт

Click to return to top of page in style!