Jump to content


Photo
- - - - -

Как ограничить показ повторяющегося элемента указанным числом

элемент повторяемый элемент

Best Answer SmetDenis , 12 March 2017 - 22:52

Можно проверять число, которое вернется в $this->key()

 

т.е переопределить рендеринг

public function render($params = array()) {
 
    $params = $this->app->data->create($params);
    $result = array();
    foreach ($this as $self) {
        if ($this->key() <= 2) {
             $result[] = $this->_render($params);
        }
    }
 
    return $this->app->element->applySeparators($params->get('separated_by'), $result);
}
Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 Сонкин

Сонкин
  • JBZoo User (rus)
  • User rate: 3.4
  • posts: 143
  • topics: 20

Posted 12 March 2017 - 21:30

Всем доброго настроения! )

 

Решил сделать простенький элемент для программы дня. Ничего особенного: иконка, текст и текстовое поле. Элемент повторяющийся.

Делал по аналогии с другими, в общем всё получилось.

 

Вот только в тизере мне нужно чтобы элемент повторялся только 3 раза, а в Full без ограничений.

Смотрел на элементы которые можно ограничить настройкой "Показать только первый", там такое:

case 'first':
	this->seek(0);
	if (($text = $this->get('value', '')) && !empty($text)) {
		$result[] = $text;
	}
	break;

т.е. перемещает к первой позиции.

Получается, что в моём случае это не подходит.

 

Подскажите, как ограничить показ только указанным числом, например 2-мя или 4-мя?

 

Сейчас элемент выводится просто вот так:

public function _render($params = array())
{	
	if ($layout = $this->getLayout('default.php')) {
		
		return $this->renderLayout($layout);
		
	}
	return null;
}

Edited by Сонкин, 12 March 2017 - 21:31.

  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 12 March 2017 - 22:52   Best Answer

Можно проверять число, которое вернется в $this->key()

 

т.е переопределить рендеринг

public function render($params = array()) {
 
    $params = $this->app->data->create($params);
    $result = array();
    foreach ($this as $self) {
        if ($this->key() <= 2) {
             $result[] = $this->_render($params);
        }
    }
 
    return $this->app->element->applySeparators($params->get('separated_by'), $result);
}

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



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


#3 Сонкин

Сонкин
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 3.4
  • posts: 143
  • topics: 20

Posted 13 March 2017 - 00:16

Спасибо! То, что хотел.


  • 0





Also tagged with one or more of these keywords: элемент, повторяемый элемент

Click to return to top of page in style!