2013-05-14 2 views
0

Привет, я работаю с Kirby. Я полный новичок в PHP, но мне удалось сделать многое. Просто нужна помощь в галерее.PHP (Kirby): переадресовать галерею в подпапку

На домашней странице одно изображение отображается в виде эскиза:

<?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 ?> 

Использование Кирби, заставляет меня хранить все элементы статьи в одной папке. Но если я это сделаю и использую код, упомянутый выше, все изображения из галереи также отображаются как миниатюры на главной странице. Я думаю, лучше всего было бы отредактировать фрагмент галереи, чтобы он мог захватывать изображения из подпапки. Но как?

Благодарим за помощь!

ответ

0

Одно из решений этого - назвать файл, который вы хотите отобразить на первой странице, например, 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 -loop, потому что вы только отображать одно изображение.)

галерея фрагмент остается неизменным ,

0

Вот попробуйте:

 <?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 ?>