每次重新加载时选择一个随机节点

时间:2019-03-27 16:22:44

标签: neoscms

我想在每次重新加载时选择一个随机节点。我的融合文件如下所示:

strerror()

不幸的是,结果存储在缓存中。这意味着只有刷新了缓存后,才会返回一个新节点。我该如何预防?我已经对缓存规则做了一些尝试,但是我还没有想出解决方案。

1 个答案:

答案 0 :(得分:0)

我要使用的元素在每个页面上。这就是诸如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>
    

有点黑,但它可以工作并且不会损害网站的性能