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, потому что вы отображаете только одно изображение.)

Фрагмент галереи остается прежним.

Другие вопросы по тегам