私は素晴らしいインライン応答イメージモジュールでDrupal 8を使用します。 <picture>
要素がレンダリングされる前のimgフィールド(代替画像)を変更したい、具体的には、width
とheight
のパラメータを<img>
フィールドに追加する必要があります。したがって私はpreprocess_image
フックを使用します。Drupalの前処理機能でイメージの高さを取得する8
このフックは、多くの変数を提供します。特に、$variables[attributes]
です。 $variables[width]
,$variables[height]
および$variables[uri]
は何らかの理由ですべて空文字列です。幸運にも$variables[attributes]
には、 $variables[attributes][data-entity-uuid]
と$variables[attributes][srcset]
が含まれていますので、少なくとも私はスタイリングされたイメージへのパスと元のイメージへのパスを持っています。
私は(それがスタイルの画像をロードして、高さと幅を取得している)行きたい場所へ行くには、2つの方法があります考え出し:
- は、URIのパスを変換(またはそれはパスです) ?
- 私は仕事にオプション1を得ることができないUUIDからファイルIDを取得し、その後、何らかの形で(私が欲しいものを得るために迂回のように思える)スタイル画像
からURIを取得します。 /sites/default/files/styles/image_lightbox/public/inline-images/erf-2.jpg?itok=4_EU9Ttx
と私はpublic://styles/image_lightbox/public/inline-images/erf-2.jpg
にそれを変換する必要がなく、のようなもので捕まってしまったと思う::srcsetでのパスは、このようなものです
$parsed_url = parse_url($variables['attributes']['srcset']);
$path = file_build_uri($parsed_url['path']);
が、それはまだそこ
に/サイト/デフォルト/ファイルの一部を残しましたオプション2を使用することができません。これは私が答え任意のヘルプ