Inheritance: DataCollection > Illuminate\Support\Collection


A ContentCollection is used to hold a collection of Content objects. This could be a combination of Page, Entry, Term, or GlobalContent objects.

The examples on this page use simple values to make things easier to understand.

Creating a Collection

You can create a ContentCollection in a similar fashion to a DataCollection or a regular collection.

$collection = collect_content([1, 2, 3]);

Available Methods

Just like regular collections, the following methods can be chained for fluent manipulation of the underlying array.


Swap out the locale of each of the underlying objects.

$page->locale(); // en

$collection = collect_content([$page])->localize('fr');

$collection->first()->locale(); // fr

If the argument passed to the localize method starts with only, it will also remove any items that don’t already have data in the requested locale.

$page1->locales(); // ['en', 'fr']
$page2->locales(); // ['en']
$page3->locale();  // ['en', 'fr']

$collection = collect_content([$page1, $page2])->localize('only fr');

$collection->all(); // [$page1, $page3]


Removes any items that aren’t entries.

$collection = collect_content([$page1, $page2, $entry1, $entry2]);

$collection->entries()->all(); // [$entry1, $entry2]


Removes any items that aren’t pages.

$collection = collect_content([$page1, $page2, $entry1, $entry2]);

$collection->pages()->all(); // [$page1, $page2]

Remove Unpublished

Removes any unpublished items (aka drafts).

$collection = collect_content([$draft1, $draft2, $published]);

$collection->removeUnpublished()->all(); // [$published]

Filter by Taxonomy Term

Removes any items that don’t belong to the given taxonomy term ID.

title: Entry One
tags: [123, 456]
title: Entry Two
tags: [456, 789]
$collection = collect_content([$entry1, $entry2]);

$collection->filterByTaxonomy(123)->all(); // [$entry1]

Import using:

use Statamic\Data\Content\ContentCollection