Kirby CMS,如何使用PHP从Object获取第一个图像?

时间:2012-12-05 14:25:21

标签: php arrays object slice kirby

我目前正在使用Kirby CMS尝试一些内容。

现在我正在尝试建立一个简单的博客,其中包含一些图片和我想要实现的内容,这是第一篇,也是博客文章中的第一张图片,并在帖子概述中显示,并附有简短的摘录来自文本。

所以我使用了来自kirby的$ page-> images()函数,它给了我帖子中所有图片的网址。但我只想要第一张照片!因为我无法找到任何有关kirby函数的文档选项,我试图在php中进行。

我发现了什么:

-kirby返回一个对象 -i无法找到任何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 ) ) ) )

任何人都知道这是什么?我的意思是图像网址在那里,但地狱的所有这些东西来自哪里?当我尝试回显$ page-> images()函数时,它只返回图片网址,而不是整篇文章。

有人可以帮忙吗?也许它甚至可以用仅限kirby的函数实现这一点,而不是php?

2 个答案:

答案 0 :(得分:4)

查看kirby cheatsheet显示:您可以像在jquery中链接它一样......

$page->images()->first()

看一看 http://getkirby.com/blog/cheat-sheet

答案 1 :(得分:1)

我从未使用过Kirby,但我在https://github.com/bastianallgeier/kirbycms快速查看了它的源代码。

大多数对象(包括image个对象)扩展了一个通用的obj类,它实现了Iterator interface

这意味着您可以使用foreachresetcurrentnext等方式对其进行迭代。

除此之外,obj类包含toArray方法,这意味着它可以安全地转换为数组,就像在代码中一样。

所以,要拍摄第一张图片,您只需要这样做:

$pictureArray = (array) $article->images();
$firstImage = $pictureArray[0];

获得image对象后,您可以使用url()方法获取图片网址:

<img src="<?php echo $image->url(); ?>">

查看http://getkirby.com网站。它似乎有很好的记录。