SilverStripe 循环遍历某些语言环境子页面

SilverStripe loop over certain locale children pages

我在我的网站上使用 SilverStripe Translatable and Translatable-DataObject 模块进行翻译。

我想在非默认语言环境中遍历某些语言环境页面子项(例如,我有 3 个语言环境,假设有 EN、RU 和 LV)。

我有这段代码:

<% loop $Children %>
    $Master.Title
<% end_loop %>

问题出在 <% loop $Children %>。如果我像这样循环它 <% loop $Master.Children %> 它不会带来任何东西。

我应该如何迭代非默认语言环境中的某些语言环境页面子项?

假设您正在循环访问 Pages,您可以尝试使用 Translatable 的 getTranslation($locale, $stage) 方法来获取您的 'master' 语言。您必须在模板中对语言环境进行硬编码。 (以下代码未经测试):

<% loop $Children %>
    <% with $Translation('de_DE') %> <%-- grabs the german translation and uses it --%>
        $Title
    <% end_with %>
<% end_loop %>

作为替代方案,您可以在您的 Controller 子类或 Controller Extension 中编写您自己的 getter,具有更多逻辑以满足您的需要。