2つのフィールドを持つコンテンツタイプを作成しました。
次に、同じページビューを作成します。これら2つのフィールドが追加されました。ここで、ビューの外部テーマを作成する必要があります。ビュー-テーマ情報-行スタイルの出力から、view-tpl.php
テンプレートフォルダーのページ。
私はこの見方でこのデザインを与えました:
<style type="text/css">
.imgStyle
{
width:100px;
height:100px;
border:3px solid grey;
}
</style>
<img id="mainImage""
src="images/collection-img/nandikesvara-front-3000-06.png" height="500px" width="540x"/>
<br />
<div id="divId" onclick="changeImageOnClick(event)">
<img class="imgStyle" src="images/collection-img/nandikesvara-front-3000-06.png" />
<img class="imgStyle" src="images/collection-img/nandikesvara-back-3000-06.png" />
<img class="imgStyle" src="images/collection-img/nandikesvara-front-3000-06.png" />
<img class="imgStyle" src="images/collection-img/nandikesvara-back-3000-06.png" />
<img class="imgStyle" src="images/collection-img/nandikesvara-front-3000-06.png" />
</div>
<script type="text/javascript">
var images = document.getElementById("divId")
.getElementsByTagName("img");
for (var i = 0; i < images.length; i++)
{
images[i].onmouseover = function ()
{
this.style.cursor = 'hand';
this.style.borderColor = 'red';
}
images[i].onmouseout = function ()
{
this.style.cursor = 'pointer';
this.style.borderColor = 'grey';
}
}
function changeImageOnClick(event)
{
event = event || window.event;
var targetElement = event.target || event.srcElement;
if (targetElement.tagName == "IMG")
{
mainImage.src = targetElement.getAttribute("src");
}
}
</script>
したがって、画像のsrcで渡すために、1つずつ画像パスをフェッチしたいと思います。私はこれを試しました$fields['image']->content
ですが、画像をオブジェクトとして印刷します。 src
タグで渡す画像のパスを取得するにはどうすればよいですか。
Drupal 7の使用例は次のとおりです。
field_get_items()
ノードからフィールドを選択するには、
file_load()
は画像ファイルをロードします。
image_load()
画像ファイルからURIを取得します
image_style_url()
は、コンテキストごとに異なる方法で画像をフォーマットします
...おまけとして、適切なデータを確認し、フィールド画像が良くない場合はデフォルトの画像に置き換えます。
// If there is a field image.
if (!empty($node->field_image)) {
$field = field_get_items('node', $node, 'field_image');
if (!empty($field[0]['fid'])) {
$image_file = file_load($field[0]['fid']);
$image = image_load($image_file->uri);
}
}
// If image, then scale it. If not use the default image.
if (!empty($image)) {
if (is_string($image)) {
$image_source = $image;
}
else {
$image_source = $image->source;
}
$url = image_style_url('image_style', $image_source);
$url_mobile = image_style_url('image_style_mobile', $image_source);
}
else {
$url = 'https://example.com/sites/default/files/default_image.png';
$url_mobile = 'https://example.com/sites/default/files/default_image_mobile.png';
}
お役に立てれば。幸運を!
編集: @Kevinは、上記のコメントで非常に優れています。
この複雑さはすべて、エンティティビューモードを使用し、フィールドベースのビューを実行しないことで回避できます。
基本的に、Drupalを使用すると、コンテンツタイプごとに[表示の管理]タブで表示モードを設定できます。そこで、各表示モードで表示または非表示にするフィールドを決定できます。この機能を使用する場合、PHPテンプレートファイルで処理する必要はありません。
画像(およびファイル)フィールドのURIを取得するには:
$node->field_image->entity->getFileUri();
そして、あなたはあなたの画像のスタイル付けされたインスタンスのURLを取得します:
$bildstyler = ImageStyle::load('thumb');
$bildstyler->buildUrl($node->field_image->entity->getFileUri());