Mungkin karena ini terlalu banyak dari sudut pandang Drupal 6 tapi ...
Bagaimana cara tema gambar dalam gaya gambar yang diberikan ketika gambar itu hidup dalam folder modul? Ini membuatku batty dan aku tahu aku melewatkan sesuatu yang sederhana.
Berikut ini beberapa contoh kode yang menunjukkan apa yang saya coba lakukan:
$file_uri = 'public://sites/all/modules/my_module/logo.jpg';
$data['logo'] = theme('image_style', array('style_name' => 'medium', 'path' => $file_uri));
Bahkan jika saya menggunakan file_build_uri (), saya berakhir dengan path ke file yang tidak ada. Jika saya memindahkan gambar ke direktori file dan mengubah $ file_uri ke 'public: //logo.jpg', itu berfungsi dengan baik.
Apakah saya perlu menyalin gambar ke direktori file sebagai bagian dari kode modul? Jika demikian, bukankah ini konyol?
Apa yang saya lewatkan? Apakah ada dokumentasi tentang cara melakukan hal seperti ini? Saya telah menghabiskan lebih dari satu jam menambang dokumentasi Drupal dan muncul sepenuhnya kering.
Jawaban:
Sayangnya itu karena desain. Dari
theme_image_style()
deskripsi dokumen tentang parameter yang dapat diterima:Tekankan milikku.
Tampaknya sistem gaya gambar hanya bekerja dalam konteks direktori file publik (mungkin pribadi juga, saya tidak yakin).
Saya mengalami situasi yang sama baru-baru ini dan akhirnya harus kode sendiri (walaupun saya meminjam banyak dari modul gambar inti).
sumber
Saya baru saja menemukan ini dan harus menulis kode untuk menangani ini.
Ini secara efektif mengkloning
theme_image_style()
untuk membuat turunan gambar selama pelaksanaan permintaan halaman. Generasi mengabaikan masalah keamanan yang biasanya memicu 404, tetapi itu juga berarti halaman yang lebih lambat saat pertama kali halaman dikunjungi.Saya hanya menggunakan skema file publik, tapi saya berharap ini gagal dengan gaya skema file pribadi.
sumber
theme_image_style()
menerima URI menggunakan pembungkus aliran PHP dan bukan jalur nyata.input://
adalah pembungkus aliran PHP, sedangkanpublic://
,private://
dantemporary://
pembungkus aliran Drupal untuk mewakilisites/default/files
folder pribadi dan sementara.Jika Anda pasti perlu menggunakan gaya gambar dengan gambar yang ditemukan di sebuah modul, Anda mungkin ingin memeriksa system_stream_wrapper modul yang menambahkan
module://
,theme://
,profile://
danlibrary://
pembungkus aliran.Perhatikan: Ini mungkin tidak relevan dengan pertanyaan saat ini tetapi karena itu disebutkan dalam posting lain, saya juga ingin merujuk ke modul remote_stream_wrapper yang menambahkan dukungan untuk URL apa pun menggunakan http: //, https: //, atau feed: / / . Seperti yang disebutkan, pembungkus aliran ini hanya untuk dibaca dan tidak dapat melakukan operasi penulisan apa pun, tetapi saya percaya ini dapat digunakan dengan
image_style_url()
dan fungsi terkait sepertitheme_image_style()
.sumber