Подвижный тип: Как генерировать случайные числа с определенным диапазоном? - PullRequest
0 голосов
/ 25 августа 2011

Я не уверен, что это возможно даже при использовании тегов Movable Type, но как отобразить случайное число в определенном диапазоне?

Например, у меня есть 10 изображений с именами от 1 до 10, и каждый раз, когда я перестраиваюсь, я хочу отобразить случайное изображение из этого диапазона.

Я использую MT5.

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 02 сентября 2011

Вы можете попробовать мою версию плагина MTCollate со случайным фильтром . Оригинальная документация здесь: http://www.nonplus.net/software/mt/MTCollate.htm - разница в том, что она добавляет фильтр sort = "~" или "random", но вы, вероятно, будете в порядке, используя блок MTShuffleList.

1 голос
/ 31 августа 2011

Я думаю, что если вы хотите показать одно изображение, а количество изображений равно десяти, возможно, вы сможете показать этот шнур.

<MTSetVarBlock name="imageID"><MTDate format="%S"></MTSetVarBlock>
<MTSetVarBlock name="imageID"><mt:GetVar name="imageID" op="div" value="6" sprintf="%d"></MTSetVarBlock>
<MTSetVar name="imageID" op="++">
src="/images/hoge<mt:GetVar name='imageID'>.jpg"
0 голосов
/ 25 августа 2011

Вы действительно можете сделать это с PHP, если вы так склонны. Movable Type поддерживает возможность публикации в PHP, и вы можете просто поместить контент, который вы хотите, чтобы он был рандомизирован, внутри блока PHP. Все, что вам нужно сделать, это изменить тип файла опубликованного архива на «php» в настройках блога. Вот пример MTML:

<?php
    $images = array();
    <mt:Asset id="1">
    $images[] = '<mt:AssetURL/>';
    </mt:Asset>
    <mt:Asset id="2">
    $images[] = '<mt:AssetURL/>';
    </mt:Asset>
    <mt:Asset id="3">
    $images[] = '<mt:AssetURL/>';
    </mt:Asset>
    $selected_asset = array_rand($images);
?>

Просто повторите тег актива для каждого конкретного актива, который вы хотите. Это сгенерирует десять операций для вставки URL каждого ресурса изображения в массив. В качестве альтернативы, если вы хотите выставить последние десять, вы бы просто <mt:Assets lastn="10">

...