2016-07-22 4 views
1

Ich habe ein Problem mit dem ChildrenOf (Seitenname) und mehrsprachig.SilverStripe Steuerelement ChildrenOf mit Multi-Sprache

Wenn ich

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

Es arbeitet auf Deutsch, aber nicht Englisch.

So hinzugefügt i

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; 
} 

meiner Seite Steuerungs und in der Vorlage:

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

Aber seine Arbeit noch nicht.

Antwort

1

Ich weiß nicht, ob es ist ein guter Ansatz, aber ich mein Problem gelöst mit den ChildrenOf in meiner Seite Steuerungsüberschreiben:

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

Scheint wie eine anständige Lösung. Persönlich würde ich wahrscheinlich einen anderen Methodennamen verwenden, so dass das ursprüngliche 'ChildrenOf' immer noch funktioniert ... – bummzack