Hallo! Über Shopware()-\>Config()-\>Snippets()-\>get('Textbaustein');
war (ist!) es möglich, beliebige Phrasen aus der Datenbank direkt im Code zu verankern. Aktuell habe ich einige Situationen, an denen ich diese „Lokalisierungs-API“ gut gebrauchen könnte. Gibt es auch für die neue Templatebasis ein solches Feature, mit dem ich mir die jeweiligen Textbausteine in meinem (PHP-)Code setzen kann? Vielen Dank im Voraus für jegliche Tipps hierzu!
Hat denn noch niemand diese Funktionalität vermisst bzw. etwas adäquates (vorhandenes?) genutzt?
Habe mir jetzt mit einer “Krücke” selbst weitergeholfen: $language = MyLanguage::getInstance(Shopware()); $language-\>getWord('key');
class MyLanguage { private static $instance = null; private static $shopware = null; private static $locale = ''; private $words = array(); public static function getInstance(Shopware $shopware = null) { if(self::$instance === null) { self::$instance = new self($shopware); return self::$instance; } else { return self::$instance; } } public function getWord($name, $namespace = '') { $sql = 'SELECT `value`, `namespace` FROM `s_core_snippets` WHERE `name` = "'.$name.'" AND localeID = '.self::$locale.' '; $sql .= ($namespace !== '') ? ' AND `namespace` = "'.$namespace.'"' : ''; return self::$shopware-\>Db()-\>fetchOne($sql); } public function getAllWords() { $sql = 'SELECT `namespace`, `shopID`, `name`, `value` FROM `s_core_snippets` WHERE `localeID` = '.self::$locale.' '; return self::$shopware-\>Db()-\>fetchAll($sql); } private function \_\_construct($shopware) { self::$shopware = $shopware; self::$locale = self::$shopware-\>Locale()-\>getId(); } }
Inkludiere ich diese Klasse als “Helper” in meinen Controllern, so kann ich jederzeit auf die Keywords/Namespaces der Templatebasis zugreifen. Ich muss gestehen, dass dies wirklich nur eine (denkbar einfache) Krücke darstellt…
Hi, in Shopware gibt es dafür schon eine Lösung. Die ist sogar noch etwas umfangreicher: Shopware()-\>Snippets()-\>getSnippet($namespace)-\>get($name, $default=null, $save=false);
Die Parameter $namespace, $default, $save sind optional und können weggelassen werden. Heiner