Cckフィールドフォーマッタを作成しました。このフィールドは、filefieldからのアップロードを、表示のためにGoogleドキュメントにリンクする埋め込みiframeに出力します。それは現在出力します:
<div class="field field-type-filefield field-field-documents">
<div class="field-items">
<div class="field-item odd">
<iframe src="http://docs.google.com/viewer?url=http://example.com/2011/sites/example/files/session/documents/brighton_online.doc&embedded=true" style="width:470px; height:296px;" frameborder="0"></iframe>
<p><a href="http://example.com/2011/sites/example/files/session/documents/brighton_online.doc">Download the document</a></p>
</div>
<div class="field-item even">
<iframe src="http://docs.google.com/viewer?url=http://example.com/2011/sites/example/files/session/documents/sample.pdf&embedded=true" style="width:470px; height:296px;" frameborder="0"></iframe>
<p><a href="http://example.com/2011/sites/example/files/session/documents/sample.pdf">Download the document</a></p>
</div>
</div>
</div>
.field-itemのコンテンツ以外のhtmlを編集したいと思います。モジュールでこれを行うことは可能ですか、それともカスタムテーマtplを作成する必要がありますか?
それを行うには、フィールドテンプレートcontent-field.tpl.phpをオーバーライドする必要があります。デフォルトのテンプレートは通常/sites/all/modules/cck/theme/content-field.tpl.phpにあります。
これにより、カスタム形式のフィールドだけでなく、レンダリングされるすべてのフィールドのテンプレートが上書きされることに注意してください。理論的には、フィールドのタイプに応じて出力を切り替えるロジックをテンプレートに組み込むことができます。しかし、それは少しハックです。 IMHO、フォーマッターに固有のすべてのhtml出力は、フォーマッター自体によって生成され、div.field-item内にとどまる必要があります。すべてのフォーマッターがcontent-field.tpl.phpのオーバーライドを開始すると想像してください。どのモジュールがオーバーライドの戦いで「勝つ」かわからないため、混乱を招きます。
私はこのような目的のために、優れたモジュール Custom Formatters をよく使用しています。シンプルでクリーン。
編集:回答中に、他に2つの回答が投稿されています。この場合、ここから取ることができるほとんどは、セマンティックCCKを使用することです。
これを行う最も簡単な方法は、 セマンティックCCK モジュールを使用することです。追加のテンプレートなしで、フィールドごとのマークアップをオーバーライドできます。
ただし、すべてをモジュール内に保持する場合は、content_fieldの定義を返し、必要なマークアップを返す hook_theme() 実装を実装する必要があります。
あなたのhook_theme実装は次のようになります:
mymodule_theme() {
return array(
'content_field' => array(
'arguments' => array('element' => NULL),
)
);
}
mymodule_content_field($element) {
...
}
hook_theme_registry_alter() も使用できます