テンプレートを使用せずにCCKフィールド出力を書き換える


7

Viewsモジュールには、フィールドの出力を書き換える素晴らしいオプションがあります。これにより、そのビューのテンプレートを作成しなくても、トークンを使用してCCKフィールドの出力を適合させることができます。

コンテンツタイプの[フィールドの表示]タブに同様の機能を許可するモジュールはありますか?ティーザーと本文のフィールド出力を少し変更する必要がありますが、完全なテンプレートを作成したくありません。

私は現在、そのためにContemplateを使用していますが、Drupal PHP APIに慣れていない場合は、必要以上に複雑になり、不必要に難しくなります。また、コンテンツタイプにフィールドを追加するたびにテンプレートを変更する必要があるのも不愉快です。実際には、本文全体やティーザー全体ではなく、いくつかのフィールドのみを書き換える必要があります。

したがって、私が欲しいのは、そのコンテンツタイプで利用可能な任意のトークンを使用して各CCKフィールド出力を書き換える簡単な方法です。そのようなものはありますか?

回答:


5

カスタムフォーマッターモジュールを探しているように聞こえます。Contemplateに非常に似ていますが、特に、[表示設定]ページまたは[ビュー]から使用するフィールドフォーマッターを作成するためのものです。

カスタムフォーマッタは、トークンまたは純粋なPHPコードの両方で構築できます。

さらに、カスタムフォーマッタは、ネイティブのDrupalフックとして、またはカスタム機能のエクスポート可能な形式でエクスポートできます。


4

マークアップを微調整するだけの場合は、セマンティックCCKを試す価値があります。

セマンティックCCKは、CCKフィールドのHTML出力をカスタマイズする手段をユーザーに提供するために作成されました。これは、ビューに同じ機能を提供する非常に推奨されているモジュールのセマンティックビューに一部影響を受けています。

Drupal 7

セマンティックCCKのDrupal 7バージョンが現在開発中です:セマンティックフィールド


2

Contemplateモジュールを使用すると、PHPコードがデータベースに配置されるため、お勧めできません。これは、一般にセキュリティの脆弱性とパフォーマンスの低下と見なされます。

hook_field_formatter_info()を使用して独自のフィールドフォーマッタを定義することを検討できます。これにより、各フィールドを処理できるカスタムコールバックを定義できます。これがDrupal 6でこれがどのように機能するかについての簡単なチュートリアルです。

他のモジュールのhook_field_formatter_info()の実装を参照して、それがどのように機能するかを確認してください。Drupal 6ではそれはhook_theme()と直接結びついていますが、Drupal 7ではhook_field_formatter_view()を使用しています。



0

私も今しばらくの間、同じ問題と戦ってきました。

使用できない/使用したくない...

  1. 平凡なアーキテクチャの理由を考慮してください。
  2. Display Suiteは素晴らしいですが、やり過ぎで、実際にはフィールドを簡単に変更することはできません。
  3. カスタムフォーマッタ。これも、複数の値フィールドのデータベースにPHPが含まれるためです。
  4. 項目のテキスト行を追加しているだけなので、フィールドテンプレート。
  5. セマンティックCCKは要素とクラスのみを変更するためです。
  6. 構成可能にする必要があるため、hook_preprocessまたは別のコードベースのソリューション。

出力を表示するためにCCKフィールドの説明を追加するだけの場合、これは本当の残念なことです。これは実際にはかなり単純なはずです。

カスタムフォーマッタが必要なようですね。


n / mこの機能はSemantic CCK 1.4に追加されました
doublejosh

パフォーマンスの良い、扱いやすいソリューションを見つけましたか?drupal6では、多くの場合、適切な解決策はノードオブジェクトの['view']を使用し、それをいくつかのノードテンプレートフォーマットと組み合わせることでした。すべてのユースケースの90%で['view']を使用しているため、非常にクリーンな出力で快適です。()...オーバーヘッドの多くを生産するレンダリングためのDrupal 7で、私たちは、再びdivitiesを持っている

Display Suiteのように聞こえ
doublejosh

カスタムフォーマッタはデータベースに情報を格納しますが、モジュールは単なるユーティリティなので、データベースにフォーマッタを作成すると、それをエクスポートして、データベース内のコードの問題がなくなります:)
解読



0

トークンフィルターモジュールを使用して、入力フィルターでCCKフィールドにトークン値を指定します。以下は、モジュールのプロジェクトページからの抜粋です。

...トークン値を入力フィルターとして使用できるようにする非常に単純なモジュール。

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