Kirby CMS, как получить первое изображение из объекта с помощью PHP?
Я сейчас пробую кое-что с Kirby CMS.
Прямо сейчас я пытаюсь создать простой блог с несколькими изображениями, и я хочу добиться того, чтобы первое и единственное изображение в посте блога не отображалось в обзоре поста вместе с кратким отрывком из текста.,
Поэтому я использую функцию $page->images() из kirby, которая дает мне URL-адреса всех картинок в посте. Но я хочу только первую картинку! Поскольку я не могу найти какие-либо документированные опции, чтобы сделать это с помощью функций kirby, я попытался сделать это в php.
что я понял:
-kirby возвращает объект.
-Я не смог найти какой-либо php-метод, чтобы вырезать что-то из объекта, поэтому я попытался преобразовать его в массив:
$pictureArray = (array) $article->images();
-Тогда я попытался использовать array_slice, который дал странные результаты, поэтому я внимательно посмотрел на мой массив. print_r($pictureArray); возвращает это:
Array ( [pagination] => [_] => Array ( [test.jpg] => image Object ( [meta] => Array ( ) [_] => Array ( [name] => test [filename] => test.jpg [extension] => jpg [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/test.jpg [uri] => content/01-articles/02-zweiter-Eintrag/test.jpg [parent] => files Object ( [pagination] => [_] => Array ( [article.txt] => variables Object ( [meta] => Array ( ) [_] => Array ( [name] => article [filename] => article.txt [extension] => txt [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/article.txt [uri] => content/01-articles/02-zweiter-Eintrag/article.txt [parent] => files Object *RECURSION* [modified] => 1354712997 [type] => content [variables] => Array ( [title] => Der zweite Eintrag [description] => Zusammenfassung. [published] => 18.12.2012 [tags] => Image, Article [text] => Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. (image: test.jpg) (image: test2.jpg) ) [filecontent] => Title: Der zweite Eintrag ---- Description: Zusammenfassung. ---- Published: 18.12.2012 ---- Tags: Image, Article ---- Text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. (image: test.jpg) (image: test2.jpg) [languageCode] => en [template] => article ) ) [test.jpg] => image Object *RECURSION* [test2.jpg] => image Object ( [meta] => Array ( ) [_] => Array ( [name] => test2 [filename] => test2.jpg [extension] => jpg [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/test2.jpg [uri] => content/01-articles/02-zweiter-Eintrag/test2.jpg [parent] => files Object *RECURSION* [modified] => 1354713013 [type] => image [thumb] => image Object *RECURSION* [title] => test2 ) ) ) ) [modified] => 1354712200 [type] => image [thumb] => image Object *RECURSION* [title] => test ) ) [test2.jpg] => image Object ( [meta] => Array ( ) [_] => Array ( [name] => test2 [filename] => test2.jpg [extension] => jpg [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/test2.jpg [uri] => content/01-articles/02-zweiter-Eintrag/test2.jpg [parent] => files Object ( [pagination] => [_] => Array ( [article.txt] => variables Object ( [meta] => Array ( ) [_] => Array ( [name] => article [filename] => article.txt [extension] => txt [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/article.txt [uri] => content/01-articles/02-zweiter-Eintrag/article.txt [parent] => files Object *RECURSION* [modified] => 1354712997 [type] => content [variables] => Array ( [title] => Der zweite Eintrag [description] => Zusammenfassung. [published] => 18.12.2012 [tags] => Image, Article [text] => Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. (image: test.jpg) (image: test2.jpg) ) [filecontent] => Title: Der zweite Eintrag ---- Description: Zusammenfassung. ---- Published: 18.12.2012 ---- Tags: Image, Article ---- Text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. (image: test.jpg) (image: test2.jpg) [languageCode] => en [template] => article ) ) [test.jpg] => image Object ( [meta] => Array ( ) [_] => Array ( [name] => test [filename] => test.jpg [extension] => jpg [root] => /home/exampledbq/www.example.com/kirby/content/01-articles/02-zweiter-Eintrag/test.jpg [uri] => content/01-articles/02-zweiter-Eintrag/test.jpg [parent] => files Object *RECURSION* [modified] => 1354712200 [type] => image [thumb] => image Object *RECURSION* [title] => test ) ) [test2.jpg] => image Object *RECURSION* ) ) [modified] => 1354713013 [type] => image [thumb] => image Object *RECURSION* [title] => test2 ) ) ) )
Кто-нибудь знает, что это? Я имею в виду URL-адрес изображения, но откуда, черт возьми, все это происходит? когда я пытаюсь отобразить функцию $page->images(), она возвращает только URL-адреса изображений, а не всю статью.
Кто-нибудь может помочь? может быть, это даже возможно достичь с помощью функций только для kirby, а не php?
2 ответа
Взгляд на чит-лист kirby показывает: вы можете связать его, как в jquery...
$page->images()->first()
Посмотрите на http://getkirby.com/blog/cheat-sheet
Я никогда не использовал Кирби, но я кратко ознакомился с его исходным кодом на https://github.com/bastianallgeier/kirbycms.
Большинство объектов, в том числе image
объекты, расширить общий obj
класс, который реализует интерфейс Iterator.
Это означает, что вы можете перебирать их с помощью foreach
, reset
, current
, next
и т.п.
Помимо этого, obj
класс содержит toArray
метод, который означает, что он может быть безопасно преобразован в массив, как вы сделали в своем коде.
Итак, чтобы сделать первое изображение, вам просто нужно сделать:
$pictureArray = (array) $article->images();
$firstImage = $pictureArray[0];
Когда у вас есть image
объект, вы можете получить URL-адрес изображения с url()
метод:
<img src="<?php echo $image->url(); ?>">
Посмотрите на сайт http://getkirby.com/. Кажется, хорошо документировано.