ビューブロックのテンプレートファイルを作成する


19

カスタムブロックのテーマについてはたくさんありますが、ビューによって作成されたブロックについてはどうでしょうか?

私のビューブロックにはid:block-views-posts-listing-block、

たとえば、block--block--views-posts-listing-block.tpl.phpなど、テンプレートファイルに名前を付けるためにさまざまな方法を試してみましたが、正しいファイル名が見つかりません。


1
テーマ開発者のモジュールは、あなたのテンプレートファイルの名前を伝えることができます。
オズワルド

感謝しますが、D7のThemerが適切に動作しないことがあります。
コジウム

回答:


18

ビューを編集します。ブロックの詳細の「詳細」設定で、をクリックし"Theme: Information"ます。テンプレートファイルのオプションのリストが表示されます。

たとえば、ブロックに「投稿リスト」という名前がある場合、「テーマ情報」オプションで一覧表示される名前を参照してください。

* Display output: views-view.tpl.php, views-view--posts-listing.tpl.php, views-view--default.tpl.php, views-view--block.tpl.php, views-view--posts-listing--block.tpl.php
* Style output: views-view-unformatted.tpl.php, views-view-unformatted--posts-listing.tpl.php, views-view-unformatted--default.tpl.php, views-view-unformatted--block.tpl.php, views-view-unformatted--posts-listing--block.tpl.php
* Row style output: views-view-fields.tpl.php, views-view-fields--posts-listing.tpl.php, views-view-fields--default.tpl.php, views-view-fields--block.tpl.php, views-view-fields--posts-listing--block.tpl.php
* Field Content: Title (ID: title): views-view-field.tpl.php, views-view-field--title.tpl.php, views-view-field--posts-listing.tpl.php, views-view-field--posts-listing--title.tpl.php, views-view-field--block.tpl.php, views-view-field--block--title.tpl.php, views-view-field--posts-listing--block.tpl.php, views-view-field--posts-listing--block--title.tpl.php 

たとえば、あなたのブロックには名前のリストがあり、スタイルはフォーマットされていviews-view-unformatted--posts-listing--block.tpl.phpません。「テーマ情報」は名前を提案します(これはいくつかの名前のうちの1つにすぎません)。元のviews-view-unformatted.tpl.phpテンプレートファイル(/ modules / views / themeにある)を現在のテーマディレクトリにコピーし、このファイルの名前を提案された名前に変更できますviews-view-unformatted--posts-listing--block.tpl.php。次に、テンプレートファイル内で変更を行います。このテンプレートで必要な変更ができない場合は、必要に応じて他のテンプレートを探してください。

最後に、新しいテンプレートを追加する場合、テンプレートファイルリストを再スキャンします。

重要!テンプレートファイルを追加、削除、または名前変更するときは、システム上のファイルを再スキャンすることにより、Drupalに変更を認識させる必要があります。[テンプレートファイルの再スキャン]ボタンをクリックすると、Drupalのテーマレジストリがクリアされ、この再スキャンプロセスがトリガーされます。強調表示されたテンプレート([テンプレートファイルの再スキャン]ボタンの上にあるテンプレートリスト)は、システムの新しい状態を反映します。

また、Oswaldによって提案されたTheme Developer Module http://drupal.org/project/devel_themerは、可能なテンプレートを検出して、基準に従って特定の要素を変更するのに役立ちます。本番環境で有効になっているこのモジュールはお勧めしません(私の場合、ビューと競合するように見えるため、テスト環境でモジュールを無効にしたこともありますが、必要な場合は非常に便利です)


いいえ、テーマビューのブロック出力では役に立ちません。テーマビューのコンテンツ専用ですが、ビューをラップするテーマブロックが必要です
Codium

こんにちは、[表示]-> [ブロック設定]の[テーマ情報]で示されるテンプレートのリストをもう一度確認してください--block。名前で終わるテンプレートがいくつかあります。reescanテンプレートを覚えて、現在のテーマのディレクトリ内にテンプレートを置いてください(modules / views / themeから選択したテンプレートをコピーしてください)。テンプレートには、「テーマ情報」リストで提案された名前が必要です。できます。
-cigotete

@drupality、プロセスを確認する手順を含む例を追加しました。回答の「たとえば」段落で確認してください。
cigotete

感謝しますが、デフォルトのdiv class = "content"ラッパーも削除できません。ビューによって作成されたhtmlのみ変更できます
Codium

2
@ moon.watcher誤解していると思います。テンプレートファイルを「ブロック」で終了しても、ブロック自体のテーマには影響しません。ビューは、ビューが出力しているブロックに固有のテンプレートファイルを作成します(ビューは同じビューから複数のブロックを出力できるため)。ビューのテーマコンテンツはブロックテーマエンジンに出力され、block.tpl.phpによって提供されるマークアップにラップされます。drupalityがやろうとしているのは(私もそうですが)、ブロック自体のテーマを変えることです。

18

テーマ開発者(別名devel_themer)によると、D7で答えを探している人のために、次の規則を使用してビューのブロックのtplオーバーライドを作成できます。

ブロック- views-- {ビューのマシン名} -ブロック

したがって、例では与える

block--views-- post-listing -block.tpl.php

スペースなし(すべてをインラインにするためにこれを適切に編集できませんでした。


noTxtが正しいことを確認し、ブロックセクションに移動してブロックを編集します。URLには、ビューのブロック名がアンダースコアmy_view_name-blockで表示されます。アンダースコアをmy-view-nameに置き換えて、次の形式を使用します: "block--views--my-view-name = block.tpl.php"
-Nevos

2
はい、これはより正しい答えです。したがって、block--views--VIEWNAME-MACHINENAMEOFDISPLAY.tpl.phpマシン名の前の単一ダッシュに注意してください!マシン名=デフォルトでは、ブロック、ブロック1などの名前が付けられますが、ビューUIで名前を変更できます。
ニキット

7

30分でtpl名を変更すると、最終的な結論になります。

block--views--[view-name]-[display-name].tpl.php

[view-name]-[display-name]部分は、noTxtのように表示されるか、ビューのID名とビュー表示のID名を '-'で結合します。最後の-blockは正しくありません。


5

Drupal 8で

ここに画像の説明を入力してください

フィールドテンプレートは次のようになります。

views-view-fields-[view-name]-block-1.html.twig


この質問はD7についてのものでした... 答えにDrupal 8が含まれている理由
Pierre.Vriens

@ Pierre.Vriensは質問が(モジュールではなく)ビューで人気があるため、ここにD8バージョンの回答を追加する必要があると考えました。
なしSssweat

これは興味深いアイデアです... これらの+ 21Kの質問についても同じことをしてみてはどうですか?
Pierre.Vriens

@ Pierre.Vriensのほとんどは人気がありません。
なしSssweat

1
8タグが追加された、素敵な;)
Codium

1

block--views--[view-name]-[display-name].tpl.phpに変更する必要があります block--views--[view-name]-[machinename].tpl.php

あなたはそれが書かれているビューの詳細セクションからマシン名を見つけるでしょう


1

上記のファイル名パターンは、ビュー名+表示名が特定の文字数を超えない限り機能します!! 私はこれに巻き込まれ、... block.tpl.phpで終わるテンプレートファイルが機能していて、次の表示が機能していない理由を見つけることができませんblock-1.tpl.phpでした。

名前が長すぎる場合、Viewsはマシン名をMD5ハッシュに置き換えます。使用するテンプレート名を確認したい場合$conf['theme_debug'] = TRUE;は、settings.phpを追加してからページのソースを確認してください。block--views--d131dd02c5e6eec4....のようなものを見つけた場合は、ビューのマシン名を短くした方がよいでしょう(管理する場合は...人間が読める名前ではありません)。または、その愚かな名前のテンプレートファイルを使用する必要があります。

また見なさい

ビューブロックのマシン名は「ハッシュ」されています(?)

そして

https://www.drupal.org/node/346602


0

このページhttps://www.drupal.org/node/1089656、およびビューが使用するアンダースコアに関する情報を確認してください。

ビューのもう1つの例では、ビュー名が「front_news」で表示IDが「block_1」のビューで作成されたブロックがある場合、テーマフックの提案は次のようになります。block--views--front-news-block-1 tpl.php(表示IDまたはビュー名にアンダースコアがある場合、それらを単一のダッシュに変換する必要があることに注意してください)


0

パネルペイン内のブロックの場合、noTxtなどが提供するソリューションは機能しません。構文は次のようになります(アンダースコアなし!):

panels-pane-block--views-[view-name]-[display-machine-name].tpl.php

この例外的なテーマオーバーライドケースを把握するために、$ conf ['theme_debug']設定を提供してくれたuser3074436に感謝します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.