web-dev-qa-db-ja.com

画像フィールドを含むカスタムブロックを作成する方法

標準のタイトル/テキスト形式の代わりに単一の画像フィールドを含むDrupal 7でカスタムブロックを構築したいと思います。これはフロントページで使用され、HTMLを話さないエディターが、そこに表示される大きなフロント画像を簡単にアップロードおよび更新できるようにします。ブロックは1つしかないので、コンテンツタイプよりもブロックの方が適切だと思います。 Drupal 6の一連のカスタムブロックを作成しましたが、それらはすべてテキストフィールドベースであり、画像アップロードフィールドが必要になったため、どのように問題に対処すればよいかわかりません。誰かが私を正しい方向に向けたいですか? hook_block_view内から画像フィールドを作成するにはどうすればよいですか?

3
Erik

(とにかく)コンテンツタイプを作成し、モジュール Node Blocks を使用できます。このコンテンツタイプで作成したすべてのコンテンツは、自動的にブロックとして利用できます。作成する必要がある場合は、少しオーバーヘッドがかかるかもしれません。

別の解決策は [〜#〜] bean [〜#〜] モジュールかもしれません。しかし、モジュール名を削除するだけで、機能しませんでした。

2
Lance

以前に(コードで)ブロックを作成したことがある場合。アップロードされた画像をサイトからプルしてフロントページブロック内に表示するコードでブロックを作成します。

次に、ユーザーの管理メニューアイテム/ページを作成します。シンプルなFAPIフォームで、 managed_file 要素タイプを使用して画像をアップロードできるようにします。

次に、form_submit関数で、likevariable_set('mytheme_frontpage_image', $form_values['values']['fid'])を使用して、アップロードされた画像のfidを保存します。

大量のコードではありません:hook_block ...必要に応じてimage_stylesを使用できます。管理フォームにはhook_menuおよびFAPIを使用できます。

0
tenken

いくつかの調査の後、私は Image Block-module を偶然見つけましたが、UXで完全に売れたわけではありませんが、今回の問題は解決しました。ただし、推奨されるソリューションよりもいくつかの利点があります。

  • それは、誤って他のテキストを入力することによってそれを台無しにする可能性なしに単一の画像フィールドを提供します(通常のテキストフィールド+ wysiwygソリューションの場合のように)
  • 編集者は、画像自体に関連付けられたコンテキストメニューを使用して画像を変更できるときに、編集画面にアクセスできます。システムの他の場所に設定ページは必要なく、覚えやすいです。
  • それは私がたった1つのノードを必要とするだけだったので、(推奨されるように)私は少し上にあると感じるコンテンツタイプに依存していません。

すべての提案をありがとう!

0
Erik