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


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

Стиль списка элементов в зависимости от чекбокса


Лучший Ответ SmetDenis , 15 January 2014 - 08:44


Список с разделителями генерируется тут
\administrator\components\com_zoo\helpers\element.php applySeparators()

но изменить логику работы этой функции довольно хлопотно.
Поэтому предлагаю другой путь

Добавьте в этот класс \media\zoo\elements\checkbox\checkbox.php функцию
Она переопределит вывод элемента

public function render($params = array()) {

    // init vars
    $params = $this->app->data->create($params);
    $selected_options  = $this->get('option', array());

    $options = array();
    foreach ($this->config->get('option', array()) as $option) {
        if (in_array($option['value'], $selected_options)) {
            $classs = $this->app->string->sluggify($option['name']);
            $options[] = '<li class="item-'.$classs.'">'.$option['name'].'</li>';
        }
    }

    return '<ul>'.implode(" ", $options).'</ul>';
}
К сожалению, опция разделителя перестанет работать. Перейти к сообщению


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

#1 tchudov

tchudov

Отправлено 15 January 2014 - 01:47

Доброго времени суток.

 

Нужно присвоить стиль элементам списка в зависимости от чекбокса (название или value - не важно)

 

Создал элемент чекбокс, создал для него позицию "icons". Разделитель "список элементов".

 

В шаблон добавил:

<?php if ($this->checkPosition("icons", array('style'=>'list'))&& trim($this->renderPosition("icons")) !== ""):?>
    <ul><?php echo trim($this->renderPosition("icons")); ?></ul>
    <?php endif; ?>

В итоге у меня получилось:

<ul>
<li>Free-WiFi</li>
<li>smoke</li>
</ul>

Можете подсказать, как мне сделать, чтобы было:

<ul>
<li class="Free-WiFi"></li>
<li class="smoke"></li>
</ul>

Не обязательно делать списком, можно спанами или дивами. Я в пхп полный профан и не знаю как подступиться к этому вопросу. Хотел иконки через CSS выводить...

 

Заранее большое спасибо!


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 15 January 2014 - 07:18

Посмотрите этот топик


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

#3 tchudov

tchudov

Отправлено 15 January 2014 - 08:22

Я смотрел. Иначе не сделал бы даже того, что есть )

 

Максимум, что получилось - вставить класс в ul, а мне надо в li и множественный, не хочу плодить десятка 2 элементов.


Сообщение отредактировал tchudov: 15 January 2014 - 08:23

  • 0

#4 SmetDenis

SmetDenis

Отправлено 15 January 2014 - 08:44   Лучший Ответ


Список с разделителями генерируется тут
\administrator\components\com_zoo\helpers\element.php applySeparators()

но изменить логику работы этой функции довольно хлопотно.
Поэтому предлагаю другой путь

Добавьте в этот класс \media\zoo\elements\checkbox\checkbox.php функцию
Она переопределит вывод элемента
public function render($params = array()) {

    // init vars
    $params = $this->app->data->create($params);
    $selected_options  = $this->get('option', array());

    $options = array();
    foreach ($this->config->get('option', array()) as $option) {
        if (in_array($option['value'], $selected_options)) {
            $classs = $this->app->string->sluggify($option['name']);
            $options[] = '<li class="item-'.$classs.'">'.$option['name'].'</li>';
        }
    }

    return '<ul>'.implode(" ", $options).'</ul>';
}
К сожалению, опция разделителя перестанет работать.
  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#5 tchudov

tchudov

Отправлено 15 January 2014 - 09:25


К сожалению, опция разделителя перестанет работать.

 

То есть мне просто это скопировать и все заработает? А в шаблоне оставить все как есть сейчас? А  нельзя создать другой элемент чекбокс с новыми функциями? Ведь при следующем обновлении это все слетит...


Сообщение отредактировал tchudov: 15 January 2014 - 09:26

  • 0

#6 SmetDenis

SmetDenis

Отправлено 15 January 2014 - 09:37

Да, должно работать. У вас не получилось?

Чтобы ничего не слетело при обновлении, можно сделать копию файла checkbox.php сюда
\media\zoo\applications\jbuniversal\elements\checkbox\checkbox.php

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



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


#7 tchudov

tchudov

Отправлено 15 January 2014 - 10:35

Большое спасибо, сейчас попробую.

После внесения изменений элемент чекбокс работать не будет как раньше?


  • 0

#8 SmetDenis

SmetDenis

Отправлено 15 January 2014 - 10:59

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



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


#9 tchudov

tchudov

Отправлено 15 January 2014 - 11:25

Заработало, спасибо.

 

А можно сделать другой элемент с таким функционалом? Будет типа вручную настраиваемого Graphical Checkbox. Стили для рецепта я сделаю и объясню что и где менять под собственные нужды, а вот всё остальное...


  • 0

#10 tchudov

tchudov

Отправлено 15 January 2014 - 14:12

Посмотрел http://forum.jbzoo.c...t-svoj-element/ и http://www.yootheme....-custom-element

 

Мало что понял, но попробовал создать дубликат элемента.

 

Создал папку в jbuniversal - icons. Создал xml и php.

 

Вроде получилось. Появился новый элемент. Теперь попробую с ним экспериментировать. Я все правильно сделал? Оригинальный элемент checkbox конфликтовать с моими изменениями в новом элементе не будет?


  • 0




Click to return to top of page in style!