SilverStripe循环遍历某些区域设置子页面

时间:2015-08-10 11:09:15

标签: php silverstripe

我正在使用SilverStripe TranslatableTranslatable-DataObject模块在​​我的网站上进行翻译。

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

我有这段代码:

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

问题在于<% loop $Children %>。如果我像这样循环它&lt;%loop $ Master.Children%&gt;它没带任何东西。

如何在非默认语言环境中迭代某些语言环境页面子项?

1 个答案:

答案 0 :(得分:2)

假设您正在遍历Pages,您可以尝试使用Translatable的getTranslation($locale, $stage)方法来获取“主”语言。您必须在模板中对区域设置进行硬编码。 (以下代码未经测试):

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

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