SilverStripe Fluent 菜单模板
SilverStripe Fluent menu template
SilverStripe Fluent 模块有一个现成的模板,可以在前端显示一个简单的语言切换菜单。
<% loop Locales %>
<li class="$LinkingMode">
<a href="$Link.ATT" hreflang="$LocaleRFC1766"<% end_if %>>
$Title.XML
</a>
</li>
<% end_loop %>
当它循环时 "Locales" 它在技术上循环是什么? 没有名为 "Locales" 的数据库 table。
我的目标是最终找到 returns 语言缩写(不是国家!)的变量(或编写函数)。所以我需要 returns 的东西,例如 nl
而不是 nl-NL
(如 $LocaleRFC1766
returns)。
Locales
is a function 在 FluentExtension
扩展中:
/**
* 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">→</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 %>
SilverStripe Fluent 模块有一个现成的模板,可以在前端显示一个简单的语言切换菜单。
<% loop Locales %>
<li class="$LinkingMode">
<a href="$Link.ATT" hreflang="$LocaleRFC1766"<% end_if %>>
$Title.XML
</a>
</li>
<% end_loop %>
当它循环时 "Locales" 它在技术上循环是什么? 没有名为 "Locales" 的数据库 table。
我的目标是最终找到 returns 语言缩写(不是国家!)的变量(或编写函数)。所以我需要 returns 的东西,例如 nl
而不是 nl-NL
(如 $LocaleRFC1766
returns)。
Locales
is a function 在 FluentExtension
扩展中:
/**
* 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">→</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 %>