PHP (Kirby): перенаправить галерею в подпапку
Привет, я работал с Кирби. Я новичок в PHP, но мне удалось многое сделать. Просто нужна помощь с галереей.
На главной странице одиночное изображение отображается в виде эскиза:
<?php foreach($articles as $article): ?>
<li class="<?php foreach(str::split($article->tags()) as $tag): ?><?php echo $tag ?> <?php endforeach ?>">
<a href="<?php echo $article->url() ?>" title="<?php echo html($article->title()) ?>"><?php foreach($article->images() as $image): ?><?php echo thumb($image, array('width' => 300, 'quality' => 70)) ?><?php endforeach ?><p><?php echo html($article->title()) ?></p></a>
</li>
<?php endforeach ?>
На странице статьи я хотел бы иметь галерею. Фрагмент галереи:
<?php if($page->hasImages()): ?>
<ul class="gallery">
<?php foreach($page->images() as $image): ?>
<li>
<a href="<?php echo $image->url() ?>"><img src="<?php echo $image->url() ?>" width="<?php echo $image->width() ?>" height="<?php echo $image->height() ?>" alt="<?php echo $image->name() ?>" /></a>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
Использование Кирби заставляет меня хранить все элементы статьи в одной папке. Но если я сделаю это и использую код, упомянутый выше, все изображения из галереи также будут отображаться в виде миниатюр на главной странице. Я думаю, что лучше всего было бы отредактировать фрагмент галереи, чтобы он мог получать изображения из подпапки. Но как?
Спасибо за помощь!
2 ответа
Вот попробуй:
<?php foreach($page->image()->yaml() as $image): ?>
<?php if($img = $page->image($image)): ?>
<img src="<?= $img->url() ?>" alt="<?= $page->title()->html() ?>" width="100%" height="100%" />
<?php endif ?>
<?php endforeach ?>
Одним из решений этой проблемы является присвоение имени файлу, который вы хотите отобразить на первой странице, примерно так: front.jpg
, Затем вы можете напрямую получить доступ к этому изображению с $page->images()->find('front.jpg')
,
Итак, вы получите это:
<?php foreach($articles as $article): ?>
<li class="<?php foreach(str::split($article->tags()) as $tag): ?><?php echo $tag ?> <?php endforeach ?>">
<a href="<?php echo $article->url() ?>" title="<?php echo html($article->title()) ?>">
<?php echo thumb($article->images()->find('front.jpg'), array('width' => 300, 'quality' => 70)) ?>
<p><?php echo html($article->title()) ?></p>
</a>
</li>
<?php endforeach ?>
(Обратите внимание, что вы должны удалить внутреннюю foreach
, потому что вы отображаете только одно изображение.)
Фрагмент галереи остается прежним.