Выберите случайный узел при каждой перезагрузке - PullRequest
0 голосов
/ 27 марта 2019

Я хочу выбрать случайный узел при каждой перезагрузке. Мой файл слияния выглядит так:

randomInt = ${Math.randomInt(0, q(node).children(Neos.Neos:Document).count()}
randomNode = ${q(node).children(Neos.Neos:Document).get(this.randomInt)}

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

1 Ответ

0 голосов
/ 27 марта 2019

Элемент, который я хочу использовать, находится на каждой странице.Вот почему что-то вроде режима unchached было бы действительно плохой идеей.

В моей ситуации выводом является только массив строк.Итак, я сделал следующее в моем Fusion.

  1. Создание "почти" массива в Fusion

    allMyStrings = Neos.Fusion:Loop {
        items = ${q(node).children(Neos.Neos:Document).get()}
        itemName = 'node'
        itemRenderer = ${"'" + q(node).property('testString') + "'"}
        @glue = ','
    }
    
  2. Выбор случайного массива в JS

    <p id='replaceMe'></p>
    <script>
      var quoteArray = [{allMyStrings -> f:format.raw()}]
      var randomIndex = Math.floor(Math.random() * quoteArray.length);
      var randomElement = quoteArray[randomIndex];
      document.getElementById('replaceMe').outerHTML= '<p>' + randomElement + '</p>';
    </script>
    

Немного вздор, но это работает, и это не вредит производительности сайта

...