Форум русской поддержки Joomla!® CMS
22.07.2017, 04:53:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Скрыть 2 последних доп. поля в шаблоне K2 для Joomla 3.х

 (Прочитано 176 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lgmax
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 102


« : 19.05.2017, 15:48:40 »

Всем привет.

Есть необходимость скрыть отображение последних двух доп. полей компонента K2 в Joomla 3.x.

Сейчас реализовано скрытие 1 последнего доп. поля.

Вот пример:

<?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): array_pop($this->item->extra_fields)?>
<div class="CompanyExtraFields">
<ul>
<?php foreach ($this->item->extra_fields as $key => $extraField): ?>
<?php if($extraField->value): ?>
<li class="<?php echo ($key%2)? " odd " : "even "; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="itemExtraFieldsLabel"><?php echo $extraField->name; ?>:</span>
<span class="itemExtraFieldsValue"><?php echo $extraField->value; ?></span>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>

Можно сделать через это:

$x =0; $s = count($this->item->extra_fields)-2;
foreach ($this->item->extra_fields as $key => $extraField){ if($x <= $s) { echo "выводим"; } $x++; }

Мы получаем размер массива, где 2 последних комментария(строки) нам не нужны.
Предположим их 7, а нам нужно вывести 5.
От общего количества, которые мы получили (7) отнимаем 2 и получаем 5 переменная ($s)
Ставим условие в цикл, если флаг(переменная $x) меньше или равна переменной ($s) то выводим, если больше то не выводим.

Кто сможет адаптировать это в готовый код?
Записан
Septdir
Практически профи
*******

Репутация: +95/-3
Offline Offline

Пол: Мужской
Сообщений: 1956


Skype: septdir


« Ответ #1 : 19.05.2017, 17:19:42 »

лучше не выводить условие. А останвливать цикл да и key у них от 0 вроде шел
тобишь у нас семь полей ключи выходя  0 1 2 3 4 5 6
На надо останвить массив когда ключ будет 5 (а имет соотвесвенно 6)
Код
$max = 5;
foreach ($this->item->extra_fields as $key => $extraField) {
if ($key == ($max)) {
break;
}
}
 
Записан
lgmax
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 102


« Ответ #2 : 19.05.2017, 17:44:01 »

Да там не то чтобы их 7, их не ограниченное кол-во.

Вообще, нужно просто скрыть последние 2, не зависимо от того, сколько их.

Как это реализовать, не подскажете?
Записан
Septdir
Практически профи
*******

Репутация: +95/-3
Offline Offline

Пол: Мужской
Сообщений: 1956


Skype: septdir


« Ответ #3 : 19.05.2017, 17:58:35 »

Да там не то чтобы их 7, их не ограниченное кол-во.

Вообще, нужно просто скрыть последние 2, не зависимо от того, сколько их.

Как это реализовать, не подскажете?
Точно так же. только max надо посчитать
Код
$max = count($this->item->extra_fields) - 2;
foreach ($this->item->extra_fields as $key => $extraField) {
if ($key == ($max)) {
break;
}
}
« Последнее редактирование: 19.05.2017, 19:12:46 от Septdir » Записан
lgmax
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 102


« Ответ #4 : 19.05.2017, 18:10:29 »

Ок. Если не сложно, впиши пожалуйста свой пример в код выше. Заранее благодарен. Думаю это будет полезно всем.
Записан
lgmax
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 102


« Ответ #5 : 19.05.2017, 19:12:23 »

Вообщем, сделал так - вместо array_pop($this->item->extra_fields) написал array_splice($this->item->extra_fields, count($this->item->extra_field) - 2), только не уверен что это правильно.
Записан
Septdir
Практически профи
*******

Репутация: +95/-3
Offline Offline

Пол: Мужской
Сообщений: 1956


Skype: septdir


« Ответ #6 : 19.05.2017, 19:14:46 »

Вообщем, сделал так - вместо array_pop($this->item->extra_fields) написал array_splice($this->item->extra_fields, count($this->item->extra_field) - 2), только не уверен что это правильно.
Да нет и почему и так можно. убрать два последний эллемента.
Просто я лично вообще не понимаю зачем вам скрывать два последних, если можно просто выводить поля по одному. Чуть сортировка даст сбой убиреться не то поле.
Записан
lgmax
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 102


« Ответ #7 : 19.05.2017, 19:21:46 »

Дело в том, что для каждой категории у меня разные доп. поля и не определенного наименования, поэтому отдельный вывод не подходит.
Записан
Septdir
Практически профи
*******

Репутация: +95/-3
Offline Offline

Пол: Мужской
Сообщений: 1956


Skype: septdir


« Ответ #8 : 19.05.2017, 19:25:24 »

Дело в том, что для каждой категории у меня разные доп. поля и не определенного наименования, поэтому отдельный вывод не подходит.
Ну непонятный alias  - это вообще малясь ваш косяк. А вообще можно и по id,
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet