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


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

Добавить уникальные классы к span


Лучший Ответ kostricyny , 16 April 2013 - 19:30

Вот окончательный вид формирования строки класса для каждого checkbox.

$class = $this->app->string->sluggify($element->config->get('name')).' element element-'.$element->getElementType(); 
   
Это выражение $this->app->string->sluggify($element->config->get('name')) тождественно значению выше обсуждаемого value Перейти к сообщению


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

#21 kostricyny

kostricyny

Отправлено 15 April 2013 - 22:53

Спасибо, после Вашего совета все получилось! Ставлю большой плюс к Вашей славной карме.

Для идентификации стиля использовал поле altlabel:
$class = $params['altlabel'].' element element-'.$element->getElementType().($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');

P.S.
А если использовать значение поля value, например, вот так $element->config->option->value, почему в результате получаем NULL?
  • 0

#22 vector

vector

Отправлено 16 April 2013 - 06:27

Немного не понял как создать создать свой элемент со стилями в block.php. Можно не много подробнее ? Спасибо !
  • 0

#23 kostricyny

kostricyny

Отправлено 16 April 2013 - 08:01

Здравствуйте, vector. По прежнему стоит задача, которую Вы определили в начале темы?
Имею ввиду, свои классы для TV, wi-f, Холодильник, Кондиционер для поля типа CheckBox. 
  • 0

#24 RomanL

RomanL

Отправлено 16 April 2013 - 08:36

Спасибо, после Вашего совета все получилось! Ставлю большой плюс к Вашей славной карме.

Для идентификации стиля использовал поле altlabel:
Код: [Выделить]$class = $params['altlabel'].' element element-'.$element->getElementType().($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');
P.S.
А если использовать значение поля value, например, вот так $element->config->option->value, почему в результате получаем NULL?

$element->get('value')
  • 0
[color=#aa0000]Не забывайте нажимать кнопку «Вопрос Решён» и «+1» под сообщением, которое Вам помогло[/color]

#25 vector

vector

Отправлено 16 April 2013 - 09:20

Ага по прежнему задача не изменилась. В поиске значения элемента Chekbox получилось "уникализировать" разными классами и прописать title.
А вот в выводе teaser значения Chekbox'a выводятся <span>.
  • 0

#26 kostricyny

kostricyny

Отправлено 16 April 2013 - 16:06

К сожалению, такое обращение к данным, как $element->get('value') возвращает значение NULL.
Обращение таким образом: $element->get('option') возвращает значение Array.
  • 0

#27 RomanL

RomanL

Отправлено 16 April 2013 - 16:14

да, я не проверял, для этого элемента может быть "option"
  • 0
[color=#aa0000]Не забывайте нажимать кнопку «Вопрос Решён» и «+1» под сообщением, которое Вам помогло[/color]

#28 kostricyny

kostricyny

Отправлено 16 April 2013 - 18:22

Ага по прежнему задача не изменилась. В поиске значения элемента Chekbox получилось "уникализировать" разными классами и прописать title.
А вот в выводе teaser значения Chekbox'a выводятся <span>.

Расскажу тот способ, который у меня работает.
Вам надо вывести пиктограммами значения поля checkbox, например, в тизере. Легкое изменения шаблона сделает решение задачи без проблемным. Поэтому, открываете файл /media/zoo/applications/jbuniversal/templates/catalog/render/item/псевдоним вашего каталога/positions.xml   и добавляете в него новую позицию, у меня это позиция checkbox:
 
<positions layout="teaser">
        <position name="title">Title</position>
        <position name="subtitle">Subtitle</position>
        <position name="price">Price</position>
            <position name="checkbox">CheckBox</position>
        <position name="properties">Properties</position>
        <position name="image">Image</position>
        <position name="rating">Rating</position>
        <position name="links">Links</position>
    </positions> 
Ее появление Вы обнаружите при редактирования полей в шаблоне вывода tizer.

Далее открываете файл /components/com_zoo/renderer/element/block.php и сохраняете его копию под именем checkbox.php - это будет ваш новый стиль для вывода поля типа checkbox. Он то самый важный для нашей задачи. Мне необходимо было, чтобы поле checkbox участвовала в поиске по логике "И", при этом, чтобы и между несколькими значениями одного checkbox тоже работала логика "И". Уважаемый, Денис, одним предложением объяснил почему логика "И" между элементами checkbox затруднена даже для "фичи" и предложил сделать отдельные checkbox с одним значением. Так что если Вам тоже необходима логика "И" между checkbox, рекомендую мой вариант.

В шаблоне тизера в поле "Альтернативная метка" установите имя класса для конкретного chackbox. У меня это tv и icebox.
Изображение       

Теперь в Вашем файле checkbox.php найдете строчку:
// create class attribute
$class = 'element element-'.$element->getElementType().($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');  
и замените на:
// create class attribute
$class = $element->get('value').' element element-'.$element->getElementType().($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');
Открываем третий файл: /media/zoo/applications/jbuniversal/templates/catalog/render/item/housing/teaser.php, Вы знаете что он отвечает за непосредственный вывод кода html в тело страницы. Здесь в нужной Вам позиции вставляете свой код вывода. У меня это так:

<?php if ($this->checkPosition('checkbox')) : ?>
    <ul>
        <?php echo $this->renderPosition('checkbox', array('style' => 'checkbox')); ?>
    </ul>
<?php endif; ?> 
В принципе всё.
  • 1

#29 kostricyny

kostricyny

Отправлено 16 April 2013 - 18:46

Для vector:
"Сейчас обратил внимание, что привел экспериментальный вариант. Правильный вот:
// create class attribute
$class = $params['altlabel'].' element element-'.$element->getElementType().($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');

"
  • 0

#30 kostricyny

kostricyny

Отправлено 16 April 2013 - 18:55

да, я не проверял, для этого элемента может быть "option"

А как привести значение $element->get('option') к типу string. Сейчас оно имеет тип Array и поэтому добавить его к имени класса не удается.
  • 0




Click to return to top of page in style!