Drupalのブロックにカスタムフィールドを追加できるようにしたいですか?ページの幅全体に広がるヘッダー領域があります。その下には、ボディコンテンツの左側の列と、さまざまなブロックの右側のサイドバーがあります。ヘッダー領域には、その上にテキストが表示された背景画像が必要です。背景画像とテキストのカスタムフィールドを持つブロックを介してこれを行うことを望んでいました。
6 に答える
より良い方法は、 と を使用してコード内にカスタム ブロックを作成することhook_block_info()
ですhook_pages_block_view()
。次に、 を介して追加のフィールドを追加しますhook_block_configure()
。
フォーム API を使用すると、任意のタイプのフィールドを追加できます。
Bean モジュールを使用します。これにより、フィールドや画像フィールドを含むカスタム ブロック タイプを作成できます。これは、ブロック モジュールとうまく統合されます。デモについては、このビデオをご覧ください - http://www.youtube.com/watch?v=Eu1YNy-BNG8
私がそれを行う方法 (そして、そのように行う他の人も何人か知っています) は、たとえば、コンテンツ タイプを「ブロック コンテンツ」にすることです。そこでは、好きなだけフィールドを作成できます。
次に、ブロック(mynodetype)が表示されるノードタイプでノード参照フィールドを作成します。
次に、ビュー - ブロックを作成します。つまり、関係 - コンテキストを指定する「カスタム ブロック」です。ほとんどの場合、このコンテキストは次のようなものになります: "mynodetype" の参照フィールドによって参照されるノード (ノードタイプ: ブロック コンテンツ) のフィールドを表示します。
これは非常にクリーンなソリューションであり、必要に応じて表示されるブロックが 1 つしかなく、コンテンツがまだノードにあり、ブロックの管理ページを汚染していないため、うまく機能します。
Views モジュール、Fields、およびブロックを使用してこれを実現できます。
- Image Upload フィールドと表示したいその他のフィールドを使用して、Background Image というコンテンツ タイプを作成します。
- ビューを使用して、ブロックとして表示されるビューを作成します。必要に応じてフィールドを書き換えるように設定できます。
- ビュー設定を使用して、背景画像を画像ではなくパスとして表示します。
たとえば、ビューでフィールド置換を使用して、次のように設定できます。
<div style="background: [field_image] left top no-repeat">
<h2>[title]</h2>
<p>[field_whatever]</p>
</div>
少しやり過ぎのように思えますが、クライアントの手に渡ります。また、何百万もの背景画像ノードを作成してサイトを破壊しないように、特定のノード ID のみを使用するように制限することも必要です。お役に立てれば。
ブロックはエンティティではないため、フィールドをエンティティにアタッチすることしかできません。フィールドの問題を解決できないのではないかと思います。
最善の策は、ブロックのコンテンツを表示するテキストに設定し、CSSを使用して含まれているdivをターゲットにし、その上に背景画像を配置することです。
または、ブロックコンテンツのフィルターを「フルHTML」に変更し、スタイルをインラインで記述します。
<div style="background:url(some/path)">Block content here</div>
Node Blocksを使用して、自動的にブロックを作成するコンテンツ タイプを定義することができます。次に、少しの CSS を使用して、やりたいことを実行できます。