2016-07-22 75 views
1

我有一個ChildrenOf(頁面名稱)和多語言的問題。SilverStripe控件ChildrenOf使用多種語言

當我使用

<% control ChildrenOf(aktuelles/messen).Limit(2) %> 

它工作在德國,但不是英語。

,所以我說

public function PageByLang($url, $lang) { 
    $SQL_url = Convert::raw2sql($url); 
    $SQL_lang = Convert::raw2sql($lang); 

    $page = Translatable::get_one_by_lang('SiteTree', $SQL_lang, "URLSegment = '$SQL_url'"); 
if ($page->Locale != Translatable::get_current_locale()) { 
    $page = $page->getTranslation(Translatable::get_current_locale()); 
} 
return $page; 
} 

到我的網頁控制器和模板:

<% control ChildrenOf(PageByLang(aktuelles/messen, de_DE)).Limit(2) %> 

但它仍然沒有工作。

回答

1

我不知道它的好方法,但我解決我的問題,在我的頁面控制器重寫ChildrenOf:

public function ChildrenOf($parentRef) { 
    $parent = SiteTree::get_by_link($parentRef); 

    if(!$parent && is_numeric($parentRef)) { 
     $parent = DataObject::get_by_id('SiteTree', $parentRef); 
    } 

    $locale = Translatable::get_current_locale(); 

    if($parent && $parent->getTranslation($locale)) 
     return $parent->getTranslation($locale)->Children(); 
} 
+0

似乎是一個不錯的解決方案。就我個人而言,我可能會使用另一個方法名稱,以便原始的'ChildrenOf'仍然可以工作... – bummzack