0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 524 Просмотров
*

Vlad1

  • Захожу иногда
  • 99
  • 0 / 0
Всем привет!

Подскажите, пожалуйста, по следующей проблеме.

Есть кастомное поле допустим field-colors (id=1) типа checkbox со значениями red / green / yellow. Есть материал, допустим "Яблоко", которому присвоено сразу два значения в этом поле, например, red и green.

В списке материалов категории вывожу поле для каждого материала следующим кодом:
Код
<ul>
<?php foreach ($this->items as $i => $article) : ?>
<?php if ($this->items[$i]->state == 0) : ?>
<div class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
        <?php else : ?>
        <li>
        <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->language)); ?>">
            <div class="cat-list-row<?php echo $i % 2; ?> d-flex">
        <?php endif; ?>
                        <div><?php echo $this->escape($article->title); ?></div>
                        <div><?php echo $this->escape($article->jcfields[1]->value); ?></div>
                </div>
                </a>
                </li>
<?php endforeach; ?>
</ul>

Таким образом вывод выглядити примерно так:

Яблоко ... red, green

Но мне нужно обернуть значения red и green в отдельные классы, например, так:

Яблоко ... red, green

Подскажите, пожалуйста, как это сделать.
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Наверно только в цикле foreach проверять значение $article->jcfields[1]->value на установленное в админке и задавать соответствующий класс элементу
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
класс вывести через i+1
индивидуальная помощь: @SetAlexx
*

Vlad1

  • Захожу иногда
  • 99
  • 0 / 0
Наверно только в цикле foreach проверять значение $article->jcfields[1]->value на установленное в админке и задавать соответствующий класс элементу

Вот об этом думал, но знаний не хватает, как это в код воплотить...
*

Vlad1

  • Захожу иногда
  • 99
  • 0 / 0
класс вывести через i+1

Уточните, пожалуйста. Пока не понимаю
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
<?php foreach ($this->items as $i => $article) : ?>
Если осмысленные названия классов не нужны - то вариант marksetter проще
Упрощенный пример


Код
<?php foreach ($this->items as $i => $article) : ?>
<?php
// класс каждого элемента будет возрастать fieldClass1, fieldClass2, fieldClass3 и тд, в исходном коде будет видно
$fieldClass = 'fieldClass'.i;
?>
<div class="<?php echo fieldClass; ?>"><?php echo $this->escape($article->jcfields[1]->value); ?></div>
<?php endforeach; ?>
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Vlad1

  • Захожу иногда
  • 99
  • 0 / 0
Если осмысленные названия классов не нужны - то вариант marksetter проще
Упрощенный пример


Код
<?php foreach ($this->items as $i => $article) : ?>
<?php
// класс каждого элемента будет возрастать fieldClass1, fieldClass2, fieldClass3 и тд, в исходном коде будет видно
$fieldClass = 'fieldClass'.i;
?>
<div class="<?php echo fieldClass; ?>"><?php echo $this->escape($article->jcfields[1]->value); ?></div>
<?php endforeach; ?>

Ковыряюсь часа три, не получается.
Классы генерируются хаотично, и значения каждый в свой div не оборачиваются ...
« Последнее редактирование: 27.06.2022, 22:12:19 от Vlad1 »
*

Vlad1

  • Захожу иногда
  • 99
  • 0 / 0
Незнаю, насколько правильно с точки зрения производительности и уязвимости (поправьте, если есть критика). Сделал так:

Код
<?php $field_str = $this->escape($article->jcfields[1]->value); ?>
<?php
if (strpos($field_str, 'red')!== false) {
  echo '<div style="color: red;">red</div>';
}
?>
<?php
if (strpos($field_str, 'green')!== false) {
  echo '<div style="color: green;">green</div>';
}
?>
« Последнее редактирование: 28.06.2022, 23:05:59 от Vlad1 »
*

Ciaoatutti

  • Новичок
  • 1
  • 0 / 0
Уважаемый beliyadm, когда мы, наконец, сможем закончить сайты, которые Вы взялись сделать и пропали? Месяц пишу с скайп - без ответа. Я, конечно, не исключаю, что это глюки скайпа..) но какие-то очень избирательные, однако.

Какие есть альтернативы для связи, если Ваш скайп так стал «глючить», телефон отвечает Вашим голосом, что я ошиблась, а почта вообще не отвечает?

Можете, пожалуйста, просмотреть мой контакт в скайп nadezda_usanova , и наконец ответить что-то ?? Ну или на почту или на тел можно. А то какой-то монолог у меня по всем каналам связи.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не удается разблокировать в менеджере материалов.

Автор vityavoluevich

Ответов: 0
Просмотров: 280
Последний ответ 10.01.2024, 09:05:30
от vityavoluevich
Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 962
Последний ответ 09.11.2023, 16:33:08
от denxio
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 1605
Последний ответ 06.10.2023, 14:02:24
от Mitriy
widgetkit slideset - js, как убрать стиль?

Автор all_zer

Ответов: 0
Просмотров: 283
Последний ответ 22.09.2023, 12:02:27
от all_zer
Модуль «Материалы - Новости» выводит неправильное количество материалов

Автор goga_pgasovav

Ответов: 1
Просмотров: 503
Последний ответ 20.03.2023, 19:30:45
от goga_pgasovav