Случайный вывод линков

  • Автор темы Автор темы XyaH
  • Дата начала Дата начала

XyaH

A-Parser Enterprise License
A-Parser Enterprise
Подскажите пожалуйста при таком использовании конструктора результатов
Код:
$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
 
Данная задача решается с помощью шаблонизатора:
eujOn.png

Код:
[% 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 %]
 
  • Like
Реакции: XyaH
Извините за наглость как в данном случае вывести не все результаты а допустим 3-5 не больше?
 
Добавить счетчик и условие:
Код:
[% 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
 
  • Like
Реакции: XyaH
Назад
Верх