Подскажите пожалуйста при таком использовании конструктора результатов Код: $serp.format('$snippet;$link\n') сниппеты и ссылки выводятся по порядку : сниппет1; ссылка1 сниппет2; ссылка2 и.т.д. Можно ли добиться случайного вывода? сниппет3; ссылка3 сниппет5; ссылка5 сниппет10; ссылка10
Появилась идея с использованием яваскрипта но как связать не знаю помогите плиз Код: Tools.prototype.random = function(min,max) { rand = min + Math.random() * (max - min) rand = Math.round(rand); return rand; } http://prntscr.com/ahj8ak функция работает
Вообщем решил проблему костыльным методом но работает осталась проблема вывода повторений Код: [% i=tools.js.random(1,30); j=tools.js.random(1,30);k=tools.js.random(1,30);serp.$i.link _"\n"; serp.$i.snippet _"\n"; serp.$j.link _"\n"; serp.$j.snippet _"\n"; serp.$k.link _"\n"; serp.$k.snippet _"\n"; %] http://prntscr.com/ahjilo
Данная задача решается с помощью шаблонизатора: Спойлер: Шаблон Код: [% order = []; exists = {}; USE Math; FOREACH [1..10000]; i = Math.int(Math.rand(serp.size)); IF !exists.exists(i); exists.$i = 1; order.push(i); LAST IF order.size == serp.size; END; END; FOREACH n IN order; serp.$n.link _ "\n"; END %]
Добавить счетчик и условие: Код: [% limit = 5; order = []; exists = {}; count = 0; USE Math; FOREACH [1..10000]; i = Math.int(Math.rand(serp.size)); IF !exists.exists(i); exists.$i = 1; order.push(i); count = count + 1; LAST IF order.size == serp.size || count == limit; END; END; FOREACH n IN order; serp.$n.link _ "\n"; END %] Кол-во задается в переменной limit