1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

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

Тема в разделе "Техническая поддержка", создана пользователем XyaH, 19 мар 2016.

  1. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Подскажите пожалуйста при таком использовании конструктора результатов
    Код:
    $serp.format('$snippet;$link\n')
    сниппеты и ссылки выводятся по порядку :
    сниппет1; ссылка1
    сниппет2; ссылка2
    и.т.д.
    Можно ли добиться случайного вывода?
    сниппет3; ссылка3
    сниппет5; ссылка5
    сниппет10; ссылка10
     
  2. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Появилась идея с использованием яваскрипта но как связать не знаю помогите плиз
    Код:
    Tools.prototype.random = function(min,max) {
      rand = min + Math.random() * (max - min)
      rand = Math.round(rand);
      return rand;
    }
    
    http://prntscr.com/ahj8ak функция работает
     
  3. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Вообщем решил проблему костыльным методом но работает осталась проблема вывода повторений
    Код:
    [% 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
     
  4. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Данная задача решается с помощью шаблонизатора:
    [​IMG]
    Код:
    [% 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 %]
     
    XyaH нравится это.
  5. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Спасибо буду пробовать
     
  6. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Извините за наглость как в данном случае вывести не все результаты а допустим 3-5 не больше?
     
  7. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Добавить счетчик и условие:
    Код:
    [% 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
     
    XyaH нравится это.
  8. XyaH

    XyaH A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    2 апр 2015
    Сообщения:
    35
    Симпатии:
    6
    Вы просто супер спасибо!!!!!
     
    Support нравится это.

Поделиться этой страницей