テンプレートを作成したブロックがあり、サイトのさまざまな部分のパネルレイアウトの内外で使用したいと考えています。
したがって、ブロックをテンプレート化するために、テンプレートに適切なアンカーポイントを提供するblock_machine_nameモジュールをインストールすることを選択しました。これにより、ブロックIDに依存しなくなります(これは、私の開発サイトと製品サイトの間で変更されるためです)。
次に、ブロックのテーマを設定し、block--sweet-name.tpl.phpのようなテンプレート名を使用すると、うまく機能します
次に、ブロックをパネルレイアウトで使用すると、問題が発生し始めます。ブロックテンプレートは無視されます。
だから私は、ブロックテンプレートを尊重するためにパネルにブロックを埋め込む方法を見つけようとしています。
これは可能ですか?
パネルでブロックテンプレートを使用する必要がある場合は、パネルオプションからスタイルを「システムブロック」に選択してください。
これにより、block--sweet-name.tpl.phpを使用できます。
Drupal 8.からこの小さなバックポートを試すことをお勧めします https://www.drupal.org/node/2307505
ブロックの出力を囲むすべてのテンプレートとその提案が表示されます。そしてこの場合、それはおそらくペインテンプレートです。
<!-- FILE NAME SUGGESTIONS:
* panels-pane--block--sweet-module-sweet-name.tpl.php
* panels-pane--block.tpl.php
x panels-pane.tpl.php
-->
マシン名ベースのブロックテンプレートがあり、この例のように非マシン名ブロックテンプレートも使用する必要がある場合は、マシン名を含む非マシン名ブロックテンプレートを作成できます。まだ理想的ではありませんが、可能です。
<?php
//use the mchine name block
$path = drupal_get_path('theme', 'myTheme');
include($path."/templates/block--sweet-name.tpl.php");
?>
私はすべての耳ですが、誰かがより良い解決策を持っている場合。