Как реализовать случайные li для ul?

Как можно сделать, что бы для одного ul выдавало несколько случайных li. Допустим из 10 li, будет выходить рандомные 3?
Денис Мавлютов
08 февраля 2017, 11:15
modx.pro
974
0

Комментарии: 5

Максим Кузнецов
08 февраля 2017, 15:34
1
+2
1. Создаем сниппет (random_list):
<?php
	$total = intval($total);
	$list = explode("||", $input);
	
	$random_items = array_rand($list, $total);
	
	$result = '';
	for ($i = 1; $i <= $total; $i++) {
		$result .= '<li>' . $list[$random_items[$i - 1]] . '</li>';
	}
	
	return $result;

2. Вызываем:
<ul>
	[[!random_list? &input=`Значение1||2||3||десять||8` &total=`3`]]
</ul>
    Денис Мавлютов
    08 февраля 2017, 15:37
    0
    Ох, забыл написать что решено. Вот как я сделал. Спасибо за помощь.
    <?php
    $input = array(
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
    '<a href="#"><li>...</li></a>',
        );
    
    echo '<ul>';
    $rand_keys = array_rand($input, 3);
    
    	echo '<li>' . $input[$rand_keys[0]] . '</li>';
    	echo '<li>' . $input[$rand_keys[1]] . '</li>';
    	echo '<li>' . $input[$rand_keys[2]] . '</li>';
    
    echo '</ul>';
      Konstantin
      08 февраля 2017, 16:42
      0
      сниппет не должен делать echo он лишь возвращать должен массив, а чанк этот массив распечатывает!
        Денис Мавлютов
        08 февраля 2017, 16:44
        0
        То есть, лучше сделать как приведенный пример выше?
          Konstantin
          08 февраля 2017, 16:59
          0
          Сниппет возвращает данные, чанки возвращают результат в виде html

          Даже в примере выше li был лишним
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5