【问题标题】:SilverStripe Fluent menu templateSilverStripe Fluent 菜单模板
【发布时间】:2016-07-22 22:16:52
【问题描述】:

SilverStripe Fluent 模块有一个现成的模板,可以在前端显示一个简单的语言切换菜单。

<% loop Locales %>
 <li class="$LinkingMode">
  <a href="$Link.ATT" hreflang="$LocaleRFC1766"<% end_if %>>
   $Title.XML
  </a>
 </li>
<% end_loop %>

当它循环“Locales”时,它在技术上循环的是什么?没有名为“Locales”的数据库表。

我的目标是最终找到返回语言缩写(不是国家!)的变量(或编写函数)。所以我需要一些返回的东西,例如 nl 而不是 nl-NL$LocaleRFC1766 返回)。

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    Locales is a functionFluentExtension 扩展中:

    /**
     * Templatable list of all locales
     *
     * @return ArrayList
     */
    public function Locales()
    {
        $data = array();
        foreach (Fluent::locales() as $locale) {
            $data[] = $this->owner->LocaleInformation($locale);
        }
        return new ArrayList($data);
    }
    

    这是LocaleInformation function返回的数据:

    $data = array(
        'Locale' => $locale,
        'LocaleRFC1766' => i18n::convert_rfc1766($locale),
        'Alias' => Fluent::alias($locale),
        'Title' => i18n::get_locale_name($locale),
        'LanguageNative' => Fluent::locale_native_name($locale),
        'Language' => i18n::get_lang_from_locale($locale),
        'Link' => $link,
        'AbsoluteLink' => $link ? Director::absoluteURL($link) : null,
        'LinkingMode' => $linkingMode
    );
    

    最近添加了Language 以允许仅检索语言缩写。

    为了利用这一点,我们可以创建一个使用 $Language 变量的自定义 LocaleMenu.ss 模板:

    <% if $Locales %>
    <div class="left">Locale <span class="arrow">&rarr;</span>
        <nav class="primary">
            <ul>
                <% loop $Locales %>
                    <li class="$LinkingMode">
                        <a href="$Link.ATT" <% if $LinkingMode != 'invalid' %>rel="alternate" hreflang="$Language"<% end_if %>>$Title.XML</a>
                    </li>
                <% end_loop %>
            </ul>
        </nav>
    </div>
    <% end_if %> 
    

    【讨论】:

    • 太棒了,工作。我看到你的拉取请求也提交给了大师。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多