web-dev-qa-db-ja.com

JTextを書き換えて、ファイルではなくデータベースからカスタムテキスト翻訳を取得する方法

システムプラグイン「Language Manager」をなんとか書き直したので、さまざまな言語のテキストをデータベース(DB)に保存します。

JText(すべてのアプリケーションコードに存在する)を書き換える方法がわからないので、ローカルファイルからではなく、DBから直接各言語のテキストを取得します。 「Language Manager」がDBからのみデータを取得するために必要なのと同じこと。

よろしくお願いします!ありがとうございました

2
Alex Ros

JTextクラスを上書きまたは変更する代わりに、データベースから翻訳を取得して文字列を返す関数呼び出し関数をモデルに記述しないのはなぜですか?

モデルを含めた後、ビューに文字列をエコーし​​ます。

//INCLUDE AT THE TOP OF THE LAYOUT FILE
$mymodel= JModelLegacy::getInstance('ViewName','MyComponentNameModel');

//ECHO OUT TRANSLATION WHERE YOU NEED IT
echo $mymodel->getTranslation('MY_TRANSLATION_STRING');

これをモデルファイルに追加します。

public function getTranslation($string)
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $sql = "SELECT text FROM #__mycom_translations WHERE translation = '$string'";
    $db->setQuery($sql);
    $row = $db->getObject();
    return $row->text;
}
3
Terry Carter

私はあなたに完全な答えを与えることはできませんが、おそらくあなたがそれを解決するのを助けるための手がかりのカップルです。

JTextクラスはここにあります:

libraries\joomla\language\text.php

おそらく、JTextクラスを独自のものでオーバーライドし、バージョンのファイルの代わりにDBを使用できます。

コアの前にロードするので、まったくロードされません。

こちらをご覧ください:

http://www.informit.com/articles/article.aspx?p=1858258&seqNum=8

1
Piero Marsilio