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


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

Возможность вывода параметров в 3/4/5... колоночной таблице


Лучший Ответ kokgreat01 , 11 November 2014 - 07:49

Мне потребовалось настроить возможность вывода параметров в 3/4/5... колоночной таблице, причём кол-во колонок у каждого типа материала м.б. разным.

 

Например:
Параметр              Ед.изм.     Модель 1     Модель 2
Жесткий диск            Гб                500             700
Процессор                ГГц            1000            2000 

....

 

Пообщавшись с разрабами, получил направление и реализовал примерно то, что нужно. Хочу описать, что сделано и спросить совет, а верно ли сделано?

 

1. Завел новый тип - loaderstype, настроил поля с параметрами как "повторяемые"

2. В /public_html/media/zoo/applications/jbuniversal/templates/catalog/renderer/element  создал файл jbtable3c.php - это стиль

3. В файле full.php добавил этот стиль:

<?php if ($this->checkPosition('properties')) : ?>
<div class="table-responsive">
    <table class="table table-bordered table-hover table-condensed params table-responsive">
        <?php echo $this->renderPosition('properties' , array(
       'style'      => 'jbtable3c',
       'label' => array(
                    'tag' => 'td', // тег в котором будет заголовок
                ),
       'element' => array(
                    'class' => 'prop' // класс элемента
                )
        )); ?>
    </table>
 </div>
<?php endif; ?>
 
4. файл jbtable3c.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       Denis Smetannikov <denis@jbzoo.com>
 */

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


$label = ''; // Переменная в которой будет хранится заголовок
/**
 * Т.к вывод заголовка можно указать в настройках элемента - это скрыть/показать.
 * Необходимо сделать данную проверку.
 */
if (isset($params['showlabel']) && $params['showlabel']) {
    //  Принимаем тег заголовка, если его не указали ставимпо умолчанию тег td
    $labelTag = (!empty($params['label']['tag'])) ? $params['label']['tag'] : 'td' ;
    //  Склеиваем тег и сам заголовок
    $label .= '<'.$labelTag.' class="par">';
    $label .= $element->config->get('name');
    $label .= '</'.$labelTag.'>';
}


// create class attribute
if (!isset($classes)) {
    $classes = array();
}

// basic element classes
$classes = array_merge(
    $classes,
    array(
        'element-' . $element->getElementType(),
        str_replace('.', '-', $layout)
    )
);

// is first element in position
if ($params['first']) {
    $classes[] = 'first';
}

// is last element in position
if ($params['last']) {
    $classes[] = 'last';
}

//  Принимаем класс элемента, если не указали не выводим
$classes[] = (!empty($params['element']['class'])) ? $params['element']['class'] : '' ;

/**
 * Выводим значения элементов/
 * Функция render выводит в цикле значения элемента(ов)
 */

echo '<tr class="'. implode(' ', $classes).'">'.$label.$element->render($params).'</tr>';

// все значения элементов собираются последовательно в ячейки таблицы через Separated by TD (настройка в \media\zoo\applications\jbuniversal\elements\text\...)

5. Добавил запись в файл /public_html/media/zoo/applications/jbuniversal/elements/text/text.xml для выбора стиля обрамления каждого повторяемого параметра через Separated by TD.

<option name="TD"><![CDATA[tag=[<td class="td-item-val">%s</td>]]]></option>

6. Шапку таблицы (с несколькими колонками) тоже пришлось в виде параметров заводить (сайт//administrator/index.php?option=com_zoo&controller=manager&group=jbuniversal&task=editelements&cid%5B%5D=loaderstype)

 

7. Нужно теперь следить, чтобы повторяемых значений каждого параметра было одинаковое кол-во, пример, временно доступен здесь: 

http://autote.tmweb....id=1&Itemid=161

 

Уф.. вроде всё описал.

Глядя на все эти костыли, хочу спросить у разрабов, а есть ли более элегантное (а значит правильное) решение?

 

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 kokgreat01

kokgreat01

Отправлено 11 November 2014 - 07:29

Мне потребовалось настроить возможность вывода параметров в 3/4/5... колоночной таблице, причём кол-во колонок у каждого типа материала м.б. разным.

 

Например:
Параметр              Ед.изм.     значение
Жесткий диск            Гб                500
Процессор            Гб               1000



#2 kokgreat01

kokgreat01

Отправлено 11 November 2014 - 07:49   Лучший Ответ

Мне потребовалось настроить возможность вывода параметров в 3/4/5... колоночной таблице, причём кол-во колонок у каждого типа материала м.б. разным.

 

Например:
Параметр              Ед.изм.     Модель 1     Модель 2
Жесткий диск            Гб                500             700
Процессор                ГГц            1000            2000 

....

 

Пообщавшись с разрабами, получил направление и реализовал примерно то, что нужно. Хочу описать, что сделано и спросить совет, а верно ли сделано?

 

1. Завел новый тип - loaderstype, настроил поля с параметрами как "повторяемые"

2. В /public_html/media/zoo/applications/jbuniversal/templates/catalog/renderer/element  создал файл jbtable3c.php - это стиль

3. В файле full.php добавил этот стиль:

<?php if ($this->checkPosition('properties')) : ?>
<div class="table-responsive">
    <table class="table table-bordered table-hover table-condensed params table-responsive">
        <?php echo $this->renderPosition('properties' , array(
       'style'      => 'jbtable3c',
       'label' => array(
                    'tag' => 'td', // тег в котором будет заголовок
                ),
       'element' => array(
                    'class' => 'prop' // класс элемента
                )
        )); ?>
    </table>
 </div>
<?php endif; ?>
 
4. файл jbtable3c.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       Denis Smetannikov <denis@jbzoo.com>
 */

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


$label = ''; // Переменная в которой будет хранится заголовок
/**
 * Т.к вывод заголовка можно указать в настройках элемента - это скрыть/показать.
 * Необходимо сделать данную проверку.
 */
if (isset($params['showlabel']) && $params['showlabel']) {
    //  Принимаем тег заголовка, если его не указали ставимпо умолчанию тег td
    $labelTag = (!empty($params['label']['tag'])) ? $params['label']['tag'] : 'td' ;
    //  Склеиваем тег и сам заголовок
    $label .= '<'.$labelTag.' class="par">';
    $label .= $element->config->get('name');
    $label .= '</'.$labelTag.'>';
}


// create class attribute
if (!isset($classes)) {
    $classes = array();
}

// basic element classes
$classes = array_merge(
    $classes,
    array(
        'element-' . $element->getElementType(),
        str_replace('.', '-', $layout)
    )
);

// is first element in position
if ($params['first']) {
    $classes[] = 'first';
}

// is last element in position
if ($params['last']) {
    $classes[] = 'last';
}

//  Принимаем класс элемента, если не указали не выводим
$classes[] = (!empty($params['element']['class'])) ? $params['element']['class'] : '' ;

/**
 * Выводим значения элементов/
 * Функция render выводит в цикле значения элемента(ов)
 */

echo '<tr class="'. implode(' ', $classes).'">'.$label.$element->render($params).'</tr>';

// все значения элементов собираются последовательно в ячейки таблицы через Separated by TD (настройка в \media\zoo\applications\jbuniversal\elements\text\...)

5. Добавил запись в файл /public_html/media/zoo/applications/jbuniversal/elements/text/text.xml для выбора стиля обрамления каждого повторяемого параметра через Separated by TD.

<option name="TD"><![CDATA[tag=[<td class="td-item-val">%s</td>]]]></option>

6. Шапку таблицы (с несколькими колонками) тоже пришлось в виде параметров заводить (сайт//administrator/index.php?option=com_zoo&controller=manager&group=jbuniversal&task=editelements&cid%5B%5D=loaderstype)

 

7. Нужно теперь следить, чтобы повторяемых значений каждого параметра было одинаковое кол-во, пример, временно доступен здесь: 

http://autote.tmweb....id=1&Itemid=161

 

Уф.. вроде всё описал.

Глядя на все эти костыли, хочу спросить у разрабов, а есть ли более элегантное (а значит правильное) решение?

 



#3 SmetDenis

SmetDenis

Отправлено 12 November 2014 - 11:43

Добрый день,

По сути вы сделали свой стиль позиции
http://jbzoo.ru/docs/position-styles

И это верный подход. Вывод нескольких элементов обрамляется "стилем" так же как по аналогии в Joomla есть chrome стили для позиций модулей.

Другой вопрос что таким сложным образом стили обычно не используют и лучше сделать один простенький элемент, который выведет все внутри себя в нужном виде.

Тогда весь код таблицы будет в одном месте.

И вам стоит понимать один важный нюанс, который усложняет код шаблона таблицы - вы масштабируете таблицу по горизонтали, а не вертикали. Поэтому либо нужно транспонировать маccив данных таблицы перед выводом, либо сильно усложнять шаблон (собственно вы так и сделали).

Я бы пошел способом собственного элемента.
Это довольно просто для любого кто мало-мальски знает PHP.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 kokgreat01

kokgreat01

Отправлено 13 November 2014 - 07:52

Спасибо за направление.

 

Почитал "КАК СДЕЛАТЬ ЭЛЕМЕНТ ДЛЯ ZOO/JBZOO? - ОСНОВЫ, КАК СДЕЛАТЬ ЭЛЕМЕНТ ДЛЯ ZOO/JBZOO? - ПРИМЕР, КАК СДЕЛАТЬ ЭЛЕМЕНТ ДЛЯ ZOO/JBZOO? - ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ".

Сходу не понятно, нужно вникать.

 

Пока буду использовать свой подход,т.к. нет времени кодить, нужно сайт наполнять.

Ну надеюсь через 3-6 месяцев может появиться обновление компонента JBZoo с новым элементом - "многоколоночная таблица". :-)



#5 SmetDenis

SmetDenis

Отправлено 13 November 2014 - 14:29

Ну надеюсь через 3-6 месяцев может появиться обновление компонента JBZoo с новым элементом - "многоколоночная таблица". :-)
 

 

Идея подобного элемента - очень хорошая. Спасибо.

Думаю появится и раньше, после запуска 2.2.0 Stable


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 kokgreat01

kokgreat01

Отправлено 14 November 2014 - 05:56

Ну раз пошла такая пья.... :-)

В тему развития компонента у меня идея возникла (сильно не пинайте, такое возможно сложно или не нужно реализовывать).

 

Ведь мы все используем Вашу интеллектуальную собственность (JBZoo Free) в своих целях, так почему не внести свой посильный вклад в дело его развития? 

 

Предлагаю внедрить разрабам JBZoo Free _автоматизированный_ способ сбора разработанных собственных стилей позиций, собственных элементов и пр. собственных компонентов JBZoo, конечно по согласованию сторон, чтобы пополнять некий репозитарий, созданный сообществом пользователей JBZoo и поддерживаемый / модерируемый разрабами JBZoo (что-то наподобие репизитария расширений для Джумлы).



#7 SmetDenis

SmetDenis

Отправлено 14 November 2014 - 17:03

Можно перенести проект на github, но мой реальный опыт говорит что никто не будет ничего дополнять туда.

Например, есть у меня репозиторий https://github.com/smetdenis/jblank
(оф сайт)

Количество загрузок jblank по моей оценке около 23 тысячи старой версии 2.2 + 1 тысяча новой 3.0
x7zb.png

Многим нравится, многие пользуются. Часто сам сталкиваюсь с ним. Для интереса погуглите кол-во сайтов которые используют его.
И ни одна душа ничего не добавила в репозиторий. Даже предложений новых фич - копейки.

А казалось бы, всего то и нужно авторизоваться на сайте и через браузер(!) изменить код.

Причины? (кеп)
- Обычный типичный Joomla-мастер далек от этого (github для него это слишком круто).
- Развивать проект обычно хочет только его автор.
- Все хотят только скачать.
- Никто не хочет трудится/думать сам и главное бесплатно =)


Поэтому я особо не тороплюсь с этим :)
Возможно в будущем. А сейчас нам хватает нашего маркета - http://forum.jbzoo.com/files/
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 kokgreat01

kokgreat01

Отправлено 17 November 2014 - 06:58

Согласен, многие сообщества развиваются ТОЛЬКО благодаря энтузиасту автора.

Маркет раньше не замечал. :-(

Какие условия пользования маркетом (коменты, закачать/скачать)? 



#9 SmetDenis

SmetDenis

Отправлено 17 November 2014 - 20:47

Согласен, многие сообщества развиваются ТОЛЬКО благодаря энтузиасту автора.
Маркет раньше не замечал. :-(
Какие условия пользования маркетом (коменты, закачать/скачать)?


Пользователи с подпиской "+" могут скачивать, комментировать и загружать свои работы (с премодерацией) а так же видят темы тех поддержки и обсуждения связанные с расширением.

Все остальные - только смотреть что есть, без возможности скачать.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!