パネルページを作成しました(つまり、パネルを使用しています)。コンテンツの追加->新しいカスタムコンテンツを使用して、パネル自体からHTMLコンテンツを追加できます。 cssクラスを追加することもできます(本文のcssクラスを追加)。
次に、そのパネルページにjqueryボタンを追加します。私のテーマにJavaScriptを追加することもできますが、この特定のパネルページだけでなく、すべてのページのロード時に呼び出されます。だから私は私のモジュールを通して私のJavaScriptを追加したいと思います。
しかし、表示されている現在のページがその特定のページパネルであることをプログラムで確認するにはどうすればよいですか?それを確認できるフックはありますか?
おかげで、
ババ
パネルをノードに「ラップ」できるパネルノードを使用してそれを実行しました。次に、hook_node_viewを使用してノードにアクセスします
function mymodule_node_view($node, $view_mode, $langcode)
{
if( $node->nid == 49 ) /* 49 is the nid */
{
drupal_add_js(drupal_get_path('module', 'mymodule') . '/myJS.js', 'file');
}
}
私はおそらくこれをtemplate_preprocess_panels_pane()のテーマで行います http://drupalcontrib.org/api/drupal/contributions!panels!panels.module/function/template_preprocess_panels_pane/7
あなたがすることができます(最初にdevel.moduleがインストールされていることを確認してください)
MYTHEME_preprocess_panels_pane(&$vars) {
dpm($vars);
}
すべてのパネルペインで行われているすべてを完全に印刷します。十分に掘り下げると、フックする$vars['_something_']['#attached']['js'] = YOUR_FILE;
を見つけることができるはずです。必要な場合は、モジュールでもこれを実行できると思います。
編集:実際にそれについて考えた後でも..
私はおそらくこれに対して助言し、あなたのテーマのjsに入れます。それが膨大な量のjsでない限り、これをnotすることで、Drupalのjs集約の利点を活用することになります。 jsをテーマに入れると、メインサイトのjsファイルに自動的にコンパイルされますが、このパネルペインのみが表示されているときに何か違うことをする場合は、まったく異なるjsファイルを集約してダウンロードする必要があります。表示されたときのページ。
これがパフォーマンスの週であると仮定すると、ブラウザーはこのファイルを最初にダウンロードした後にキャッシュする必要があるため、実際にはこれとは間違った方向に進んでいる可能性があります。
編集:フック名のタイプミス
パネルのテーマテンプレートは次のようになります。
panels-pane--[pane type]--[pane subtype].tpl.php
また、特定のニーズに合わせてテンプレートを変更することもできます。このページでは、さらに詳しく説明しています。
https://drupal.org/node/167881
panel3のドキュメントのホームページを忘れないでください。
https://drupal.org/node/496278
パネルに関連するすべてのものを始めるのに良い場所です。テーマのオーバーライドはそこからリンクされています。
JSインジェクターモジュールを見たことはありますか?それは基本的にあなたが探しているものを正確に行います。特定のページにJavaScriptを挿入します。また、JavaScriptをロードする場所(つまり、ヘッダーまたはフッター)を指定することもできます。とても便利な。