私は Drupal の初心者ですが、モジュール開発を研究しており、ブロックと jQuery を使用していくつかの機能を完成させることができました。しかし、要件が大きくなり、一部のユーザーは画像をアップロードしてトリミングし、他のブロックに表示されるサムネイルを作成したいと考えています。この正確な動作は、いくつかのコミュニティ モジュール、特に ImageFieldCrop で既に行われていることを知っているので、それを使用したいと思います...ただし、アップロードされた画像とトリミングされた画像を、カスタム モジュール内のフォルダーに保存したいと思います。それで問題は?そのモジュールをどのように拡張できますか?...正しいパスを指すためにコードを書き直す必要がありますか??? または、フック メソッドをインターセプトする方法はありますか? 私は drupal 開発に慣れていないので、これが基本的な質問のように聞こえる場合は申し訳ありません... とにかく、誰かがフックをインターセプトする方法や、私が作成したもので他のモジュールコードを使用する方法を示すリンクやチュートリアルを提供してくれると助かります。どうもありがとう
1 に答える
ユーザーが画像やファイルをアップロードできるようにしたい場合は、D7 でコア モジュール セットの一部となった「filefield」を使用してこれを実現するのがおそらく最善です。(コンテンツ タイプの作成プロセスの一部として) フィールドを追加して構成するときに、ファイルを保存するパスを設定する機会があります。
JS トリミングと画像スタイル
クロップ ソリューションに関しては、EPSA クロップモジュールをお勧めします。これにより、ユーザーはアップロードされた画像ごとにさまざまなトリミング領域を定義でき、インタラクティブな JS ウィジェットを使用して定義できます。これは、D7 の「イメージ スタイル」(D6 では正式にイメージ キャッシュ) の規則に従って動作し、イメージの効率的な再利用と操作を可能にします。たとえば、ユーザーが 1 つの高解像度画像をアップロードすると、サイトのさまざまな場所で使用するバリエーションを作成できます。
スタイルが作成されたら、API テーマ呼び出し ( theme_image_style )を使用してプログラムで追加できます。
確立された慣習を無視しない
ただし、システムとしての Drupal は多くの規則を設定しており、理想的には従う必要があります。
ユーザーが作成したファイルについては、サイトのファイル ディレクトリに保存することをお勧めします。Drupal は 2 種類のファイル アクセスを使用します。パブリックはアクセス許可を一切考慮しません。プライベートはアクセス制限を適用できるようにします。モジュール ディレクトリにファイルを保存することを選択すると、自分自身や将来の開発者に問題が発生する可能性があります。
よほどの理由がない限り、これらのファイルをモジュール ディレクトリに保存しないことをお勧めします。