2

現在、 Kirby CMSでいくつかのことを試しています。

今、私はいくつかの写真で簡単なブログを作成しようとしています。私が達成したいのは、ブログ投稿の最初の、そして最初の写真だけが、テキストからの短い抜粋とともに投稿の概要に表示されることです.

そこで、kirby の $page->images() 関数を使用して、投稿内のすべての写真の URL を取得します。でも最初の写真だけ欲しい!カービー関数でそれを行うための文書化されたオプションが見つからないため、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 のみが返されます。

誰でも助けることができますか?phpではなくカービーのみの関数でこれを達成することさえ可能でしょうか?

4

2 に答える 2

1

私はカービィを使ったことはありませんが、https://github.com/bastianallgeier/kirbycmsでそのソース コードをざっと見てみました。

オブジェクトを含むほとんどのオブジェクトは、 Iterator インターフェイスを実装imageするジェネリック クラスを拡張します。obj

foreachこれは、resetcurrentnextなどでそれらを反復できることを意味します。

それに加えて、objクラスにはtoArrayメソッドが含まれているため、コードで行ったように安全に配列に変換できます。

したがって、最初の画像を取得するには、次のことを行う必要があります。

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

imageオブジェクトを取得したら、次のメソッドで画像の URL を取得できますurl()

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

http://getkirby.com Web サイトを見てください。十分に文書化されているようです。

于 2012-12-07T14:59:46.623 に答える