#neoscms
#neoscms
Вопрос:
Я хочу выбирать случайный узел при каждой перезагрузке. Мой файл fusion выглядит следующим образом:
randomInt = ${Math.randomInt(0, q(node).children(Neos.Neos:Document).count()}
randomNode = ${q(node).children(Neos.Neos:Document).get(this.randomInt)}
К сожалению, результат сохраняется в кэше. Это означает, что только после очистки кэша будет возвращен новый узел. Как я могу предотвратить это? Я уже немного поэкспериментировал с правилами кэша, но пока не нашел решения.
Ответ №1:
Элемент, который я хочу использовать, находится на каждой странице. Вот почему что-то вроде unchached
режима было бы действительно плохой идеей.
В моей ситуации результатом является только массив строк. Итак, я сделал следующее в своем Fusion.
-
Генерирует «почти» массив в Fusion
allMyStrings = Neos.Fusion:Loop { items = ${q(node).children(Neos.Neos:Document).get()} itemName = 'node' itemRenderer = ${"'" q(node).property('testString') "'"} @glue = ',' }
-
Выберите случайный массив в 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>
Немного халтурно, но это работает, и это не вредит производительности веб-сайта