4

この質問に続いて、私は今、プラグインを作り直そうとしています。

{exp:deetector}
     {user_agent}
     {hash}
{/exp:deetector}

しかし、以下のコードでは、出力が得られません。

public function __construct()
{
    $this->EE =& get_instance();

    include(PATH_THIRD.'/deetector/libraries/detector.php');

    $this->ua = $ua;

    $tagdata = $this->EE->TMPL->tagdata;

    $variables[] = array(
        'user_agent'   => $this->ua->ua,
        'hash'         => $this->ua->uaHash,
        'browser_os'   => $this->ua->full,
        'browser'      => $this->ua->browser,
        'browser_full' => $this->ua->browserFull
    );

    return $this->EE->TMPL->parse_variables($tagdata, $variables);
}

$this->return_data = $this->ua->xx上記の各変数に対して実行すると、出力が得られますが、$variables配列を解析した場合は得られません。

私も試しまし$variables = arrayたが、未定義のオフセット:0を取得します。

4

2 に答える 2

10

出力にコンストラクターを使用しているだけの場合は、プラグインクラスにreturn_data解析されたタグデータを含むパブリックプロパティがあることを確認してください。

$this->return_data = $this->EE->TMPL->parse_variables($tagdata, $variables);

クラス内の他のメソッドの場合は、例のように、解析されたデータを返すだけです。

補足として、ここではデータをループしていないと思います。代わりにこのメソッドを使用することを検討してください。そのため、、、などのparse_variables_row追加の変数は省略されます。そのメソッドを使用する場合、ネストされた配列は必要ないため、次のようになります。counttotal_resultsswitch

$variables = array(
    'user_agent' => $this->ua->ua,
    ...
);

$this->return_data = $this->EE->TMPL->parse_variables_row($tagdata, $variables);
于 2012-10-29T09:29:32.403 に答える
2

あなたが参照した他の投稿に関して、あなたが2つのコンストラクター関数を定義したことを誰も指摘しませんでした:

__construct() and deetector()

2番目のものをドロップする必要がありますuse __construct()。それが奇妙なPHPエラーを引き起こしている可能性があるかどうかはわかりません。

于 2012-10-29T12:53:55.147 に答える