1

私は拡張機能に取り組んでおり、設定で利用可能なオプションの 1 つで、レンダリング時にドキュメント ヘッドにカスタム JavaScript を追加する必要があります。私が抱えている問題は、解析順序にあります。(インクルードを行うより良い方法もあるかもしれません)

channel_entries_tagdataフックを使用しています。

この中で、設定が処理されたら、次のことを行っています。

// Add the required javascript
$jscript = "
    <script type="text/javascript">
        /*! etc......
    </script></head>
";

// Add js
$tagdata = str_replace("</head>", $jscript, $tagdata);

JavaScriptを別のファイルに保存して、何らかの方法で参照できるようにしたいのですが、この段階ではその方法がわかりません。

私が直面しているもう 1 つの問題は、EE 変数の解析順序です。JavaScript 内では、$tagdata の変数を使用しています。このようなもの:

$.post("URL", { channel: "{channel}", entryId: "{entry_id}", urlTitle: "{url_title}", lastSegment: "{last_segment}", editDate: eo.editDate, field: eo.eleName }, function(data){...

この場合、EE 変数をどのように呼び出し/使用しますか?

Elaborated... この拡張機能は次の場合に使用します: コントロール パネルの [アドオン] -> [拡張機能] で、拡張機能を有効にします。その拡張機能の [設定] で、そのチャンネルのエントリを「編集」できるメンバーまたはグループをチャンネルごとに承認できます。

拡張機能は、パーミッションを確認した後、各カスタム フィールド タイプをレンダリング前に編集し、クラス要素にラップします。JavaScript ファイルは、次にこの機能用です。その要素がクリックされると、カスタム フィールド タイプとチャネル/エントリ情報を含むモーダルが開かれるため、編集後にフィールドを保存できます。

4

2 に答える 2

0

のスクリプトを<head>ジェネリック関数にして、チャネルエントリ内から呼び出すことで変数を渡すことができますか?

<head>
  ...
  <script>
    function W3bGuy_function(channel, entry_id, last_segment) {
      ...whatever...
    }
  </script>
</head>

<body>
  ...
  {exp:channel:entries}
  some action triggers: W3bGuy_function('{channel}', '{entry_id}', '{segment_3}');
  {/exp:channel:entries}
  ...
于 2012-09-14T20:34:29.130 に答える
0

channel_entries_tagdata各ループ内から取得された生のテンプレートコードが含まれ、{exp:channel:entries}次にそのエントリの実際のデータの配列である別の変数($ row)が含まれます。(ドキュメントによる。)

したがって、最初に、この方法でJSをに追加する場合は、ページテンプレート全体がチャネルエントリループ内にあることを確認する必要があります。これは、埋め込み内にある<head>場合は機能しない可能性があります。<head>

次に、そのフックを介して渡されたデータをダンプして$row、そこから返されたJSでデータを抽出できるかどうかを確認することをお勧めします。

お役に立てば幸いです。

于 2012-09-17T00:03:20.590 に答える