2

我目前正在尝试使用Kirby CMS的一些东西。

现在我正在尝试用一些图片构建一个简单的博客,我想要实现的是,博客文章中的第一张也是唯一的第一张图片,与文章的简短摘录一起显示在文章概述中.

所以我使用了 kirby 的 $page->images() 函数,它为我提供了帖子中所有图片的 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 ) ) ) )

有谁知道这是什么吗?我的意思是图片网址在那里,但是这些东西到底是从哪里来的?当我尝试回显 $page->images() 函数时,它只返回图像 url 而不是整篇文章。

有人可以帮忙吗?也许甚至可以通过仅 kirby 函数而不是 php 来实现这一点?

4

2 回答 2

4

看看柯比备忘单就会发现:你可以像在 jquery 中一样链接它......

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

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

于 2012-12-20T21:22:58.337 回答
1

我从未使用过 Kirby,但我在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网站。它似乎有据可查。

于 2012-12-07T14:59:46.623 回答