7

ブロック(ブロック、つまり変換ブロック)truncateの出力に修飾子(私の場合は)を適用しようとしています。HTMLマークアップには不便なので、修飾子trはありません。tr

使用する構文の種類も、許可されているかどうかもわかりません(ただし、ブロックの使用法は少しファンキーかもしれません)。

それが理にかなっているなら、そのような何か:

{{tr}Really long text I want to be translated then truncated{/tr}|truncate}

4

4 に答える 4

8

これは次のように実行できます。

{capture assign="var"}{tr}...{/tr}{/capture}
{$var|truncate}

しかし、私は個人的に切り捨てブロック関数を作成し、これを行います

{truncate}{tr}...{/tr}{/truncate}
于 2011-07-05T09:22:39.460 に答える
1

Afaikあなたはあなたが好きなようにそれらを組み合わせることができません。私が持っている唯一のアイデアは、変換関数と一緒に独自の切り捨て関数を作成することです。

function do_translation($params, $content, $smarty, &$repeat) {
  if (isset($content)) {
    $options = $params["options"];
    $content = yourTranslateFunction($content);
    if ($options['truncate']) $content = yourTruncateFunction($content);
    return $content;
  }
}
$smarty->registerPlugin("block", "tr", "do_translation");

次に、次のようにSmartyで呼び出すことができます。

{tr truncate="1"}Really long text I want to be translated then truncated{/tr}
于 2011-07-05T06:52:54.287 に答える
0

希望する方法が機能しません。これにより、構文エラーを伴うSmarty例外がスローされます。ただし、次のように複数のブロック機能を組み合わせることができます。

$smarty->registerPlugin('block', 'tr', 'do_translation', true);
$smarty->registerPlugin('block', 'truncate', 'do_truncation', true);

テンプレートファイルで、次のように組み合わせます。

{truncate}{tr}Really long text I want to be translated then truncated{/tr}{/truncate}
于 2011-07-05T09:14:14.223 に答える
0

これは、Smarty2およびSmarty3で機能します。

{t}Really long text I want to be translated then truncated{/t|truncate:10}

于 2015-08-30T01:29:44.973 に答える