# $layouts

A collection of layouts

****

- Full class name: `Kirby\Cms\Layouts`
- Source: <https://github.com/getkirby/kirby/tree/5.5.3/src/Cms/Layouts.php#L21>

****

### $layouts

- [$layouts->__call()](https://getkirby.com/docs/reference/objects/cms/layouts/__call.md)
- [new Layouts()](https://getkirby.com/docs/reference/objects/cms/layouts/__construct.md)
- [$layouts->__debugInfo()](https://getkirby.com/docs/reference/objects/cms/layouts/__debug-info.md)
- [$layouts->__get()](https://getkirby.com/docs/reference/objects/cms/layouts/__get.md)
- [$layouts->__isset()](https://getkirby.com/docs/reference/objects/cms/layouts/__isset.md)
- [$layouts->__set()](https://getkirby.com/docs/reference/objects/cms/layouts/__set.md)
- [$layouts->__toString()](https://getkirby.com/docs/reference/objects/cms/layouts/__to-string.md)
- [$layouts->__unset()](https://getkirby.com/docs/reference/objects/cms/layouts/__unset.md)
- [$layouts->add()](https://getkirby.com/docs/reference/objects/cms/layouts/add.md)
- [$layouts->append()](https://getkirby.com/docs/reference/objects/cms/layouts/append.md)
- [$layouts->chunk()](https://getkirby.com/docs/reference/objects/cms/layouts/chunk.md)
- [$layouts->clone()](https://getkirby.com/docs/reference/objects/cms/layouts/clone.md)
- [$layouts->count()](https://getkirby.com/docs/reference/objects/cms/layouts/count.md)
- [$layouts->current()](https://getkirby.com/docs/reference/objects/cms/layouts/current.md)
- [$layouts->data()](https://getkirby.com/docs/reference/objects/cms/layouts/data.md)
- [$layouts->empty()](https://getkirby.com/docs/reference/objects/cms/layouts/empty.md)
- [$layouts->extend()](https://getkirby.com/docs/reference/objects/cms/layouts/extend.md)
- [Layouts::factory()](https://getkirby.com/docs/reference/objects/cms/layouts/factory.md)
- [$layouts->field()](https://getkirby.com/docs/reference/objects/cms/layouts/field.md)
- [$layouts->filter()](https://getkirby.com/docs/reference/objects/cms/layouts/filter.md)
- [$layouts->filterBy()](https://getkirby.com/docs/reference/objects/cms/layouts/filter-by.md)
- [$layouts->find()](https://getkirby.com/docs/reference/objects/cms/layouts/find.md)
- [$layouts->findBy()](https://getkirby.com/docs/reference/objects/cms/layouts/find-by.md)
- [$layouts->findByKey()](https://getkirby.com/docs/reference/objects/cms/layouts/find-by-key.md)
- [$layouts->first()](https://getkirby.com/docs/reference/objects/cms/layouts/first.md)
- [$layouts->flip()](https://getkirby.com/docs/reference/objects/cms/layouts/flip.md)
- [$layouts->get()](https://getkirby.com/docs/reference/objects/cms/layouts/get.md)
- [$layouts->getAttribute()](https://getkirby.com/docs/reference/objects/cms/layouts/get-attribute.md)
- [$layouts->getIterator()](https://getkirby.com/docs/reference/objects/cms/layouts/get-iterator.md)
- [$layouts->getMethod()](https://getkirby.com/docs/reference/objects/cms/layouts/get-method.md)
- [$layouts->group()](https://getkirby.com/docs/reference/objects/cms/layouts/group.md)
- [$layouts->groupBy()](https://getkirby.com/docs/reference/objects/cms/layouts/group-by.md)
- [$layouts->has()](https://getkirby.com/docs/reference/objects/cms/layouts/has.md)
- [$layouts->hasBlockType()](https://getkirby.com/docs/reference/objects/cms/layouts/has-block-type.md)
- [$layouts->hasMethod()](https://getkirby.com/docs/reference/objects/cms/layouts/has-method.md)
- [$layouts->indexOf()](https://getkirby.com/docs/reference/objects/cms/layouts/index-of.md)
- [$layouts->intersection()](https://getkirby.com/docs/reference/objects/cms/layouts/intersection.md)
- [$layouts->intersects()](https://getkirby.com/docs/reference/objects/cms/layouts/intersects.md)
- [$layouts->isEmpty()](https://getkirby.com/docs/reference/objects/cms/layouts/is-empty.md)
- [$layouts->isEven()](https://getkirby.com/docs/reference/objects/cms/layouts/is-even.md)
- [$layouts->isNotEmpty()](https://getkirby.com/docs/reference/objects/cms/layouts/is-not-empty.md)
- [$layouts->isOdd()](https://getkirby.com/docs/reference/objects/cms/layouts/is-odd.md)
- [$layouts->join()](https://getkirby.com/docs/reference/objects/cms/layouts/join.md)
- [$layouts->key()](https://getkirby.com/docs/reference/objects/cms/layouts/key.md)
- [$layouts->keyOf()](https://getkirby.com/docs/reference/objects/cms/layouts/key-of.md)
- [$layouts->keys()](https://getkirby.com/docs/reference/objects/cms/layouts/keys.md)
- [$layouts->last()](https://getkirby.com/docs/reference/objects/cms/layouts/last.md)
- [$layouts->limit()](https://getkirby.com/docs/reference/objects/cms/layouts/limit.md)
- [$layouts->map()](https://getkirby.com/docs/reference/objects/cms/layouts/map.md)
- [$layouts->next()](https://getkirby.com/docs/reference/objects/cms/layouts/next.md)
- [$layouts->not()](https://getkirby.com/docs/reference/objects/cms/layouts/not.md)
- [$layouts->nth()](https://getkirby.com/docs/reference/objects/cms/layouts/nth.md)
- [$layouts->offset()](https://getkirby.com/docs/reference/objects/cms/layouts/offset.md)
- [$layouts->paginate()](https://getkirby.com/docs/reference/objects/cms/layouts/paginate.md)
- [$layouts->pagination()](https://getkirby.com/docs/reference/objects/cms/layouts/pagination.md)
- [$layouts->parent()](https://getkirby.com/docs/reference/objects/cms/layouts/parent.md)
- [Layouts::parse()](https://getkirby.com/docs/reference/objects/cms/layouts/parse.md)
- [$layouts->pluck()](https://getkirby.com/docs/reference/objects/cms/layouts/pluck.md)
- [$layouts->prepend()](https://getkirby.com/docs/reference/objects/cms/layouts/prepend.md)
- [$layouts->prev()](https://getkirby.com/docs/reference/objects/cms/layouts/prev.md)
- [$layouts->query()](https://getkirby.com/docs/reference/objects/cms/layouts/query.md)
- [$layouts->random()](https://getkirby.com/docs/reference/objects/cms/layouts/random.md)
- [$layouts->remove()](https://getkirby.com/docs/reference/objects/cms/layouts/remove.md)
- [$layouts->rewind()](https://getkirby.com/docs/reference/objects/cms/layouts/rewind.md)
- [$layouts->search()](https://getkirby.com/docs/reference/objects/cms/layouts/search.md)
- [$layouts->set()](https://getkirby.com/docs/reference/objects/cms/layouts/set.md)
- [$layouts->shuffle()](https://getkirby.com/docs/reference/objects/cms/layouts/shuffle.md)
- [$layouts->slice()](https://getkirby.com/docs/reference/objects/cms/layouts/slice.md)
- [$layouts->sort()](https://getkirby.com/docs/reference/objects/cms/layouts/sort.md)
- [Layouts::sortArgs()](https://getkirby.com/docs/reference/objects/cms/layouts/sort-args.md)
- [$layouts->sortBy()](https://getkirby.com/docs/reference/objects/cms/layouts/sort-by.md)
- [$layouts->toArray()](https://getkirby.com/docs/reference/objects/cms/layouts/to-array.md)
- [$layouts->toBlocks()](https://getkirby.com/docs/reference/objects/cms/layouts/to-blocks.md)
- [$layouts->toJson()](https://getkirby.com/docs/reference/objects/cms/layouts/to-json.md)
- [$layouts->toString()](https://getkirby.com/docs/reference/objects/cms/layouts/to-string.md)
- [$layouts->update()](https://getkirby.com/docs/reference/objects/cms/layouts/update.md)
- [$layouts->valid()](https://getkirby.com/docs/reference/objects/cms/layouts/valid.md)
- [$layouts->values()](https://getkirby.com/docs/reference/objects/cms/layouts/values.md)
- [$layouts->when()](https://getkirby.com/docs/reference/objects/cms/layouts/when.md)
- [$layouts->without()](https://getkirby.com/docs/reference/objects/cms/layouts/without.md)

<h2 id="how-to-render-layouts-in-templates"><a href="#how-to-render-layouts-in-templates" tabindex="-1">How to render layouts in templates?</a></h2>
<p>Using the <a class="type-link" href="https://getkirby.com/docs/reference/templates/field-methods/to-layouts"><code class="type type-method">toLayouts</code></a> field method, you can retrieve a Layouts collection - a collection of <a class="type-link" href="https://getkirby.com/docs/reference/objects/cms/layout"><code class="type type-class">Kirby\Cms\Layout</code></a> objects:</p>
<figure class="code">
<pre><code class="language-php">&lt;?php foreach ($page-&gt;layout()-&gt;toLayouts() as $layout): ?&gt;
&lt;section class="grid" id="&lt;?= $layout-&gt;id() ?&gt;"&gt;
  &lt;?php foreach ($layout-&gt;columns() as $column): ?&gt;
  &lt;div class="column" style="--span:&lt;?= $column-&gt;span() ?&gt;"&gt;
    &lt;div class="blocks"&gt;
      &lt;?= $column-&gt;blocks() ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;?php endforeach ?&gt;
&lt;/section&gt;
&lt;?php endforeach ?&gt;</code></pre>
</figure>
<h2 id="calculate-the-column-span-value"><a href="#calculate-the-column-span-value" tabindex="-1">Calculate the column span value</a></h2>
<p>Each column in a layout has a <a class="type-link" href="https://getkirby.com/docs/reference/objects/cms/layout-column/width"><code class="type type-method">$column-&gt;width()</code></a> method which will return the width defined in the blueprint. (i.e. <code class="type">1/2</code>) but for many grid systems you need to know how many columns the current column should span in the grid. This can be done with the <a class="type-link" href="https://getkirby.com/docs/reference/objects/cms/layout-column/span"><code class="type type-method">$column-&gt;span()</code></a> method. The method calculates with a 12-column grid by default. So for example, if your column width is <code class="type">1/2</code> the span method would return a value of 6. If you are working with a different kind of grid system you can pass the number of columns like this: <code class="type type-none">$column-&gt;span(6)</code>:</p>
<figure class="code">
<pre><code class="language-php">&lt;?php foreach ($page-&gt;layout()-&gt;toLayouts() as $layout): ?&gt;
&lt;section class="6-column-grid" id="&lt;?= $layout-&gt;id() ?&gt;"&gt;
  &lt;?php foreach ($layout-&gt;columns() as $column): ?&gt;
  &lt;div class="column" style="--span:&lt;?= $column-&gt;span(6) ?&gt;"&gt;
    &lt;div class="blocks"&gt;
      &lt;?= $column-&gt;blocks() ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;?php endforeach ?&gt;
&lt;/section&gt;
&lt;?php endforeach ?&gt;</code></pre>
</figure>
<h2 id="working-with-individual-blocks"><a href="#working-with-individual-blocks" tabindex="-1">Working with individual blocks</a></h2>
<p>In some cases, you might even want to controll the way blocks within layouts are rendered. <a class="type-link" href="https://getkirby.com/docs/reference/objects/cms/layout-column/blocks"><code class="type type-method">$column-&gt;blocks()</code></a> will return a blocks collection that you can work with and create another nested foreach loop.</p>
<figure class="code">
<pre><code class="language-php">&lt;?php foreach ($page-&gt;layout()-&gt;toLayouts() as $layout): ?&gt;
&lt;section class="6-column-grid" id="&lt;?= $layout-&gt;id() ?&gt;"&gt;
  &lt;?php foreach ($layout-&gt;columns() as $column): ?&gt;
  &lt;div class="column" style="--span:&lt;?= $column-&gt;span(6) ?&gt;"&gt;
    &lt;div class="blocks"&gt;
      &lt;?php foreach ($column-&gt;blocks() as $block): ?&gt;
      &lt;div class="block block-type-&lt;?= $block-&gt;type() ?&gt;"&gt;
        &lt;?= $block ?&gt;
      &lt;/div&gt;
      &lt;?php endforeach ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;?php endforeach ?&gt;
&lt;/section&gt;
&lt;?php endforeach ?&gt;</code></pre>
</figure>
<h2 id="passing-the-layout-object-to-the-block-snippet"><a href="#passing-the-layout-object-to-the-block-snippet" tabindex="-1">Passing the layout object to the block snippet</a></h2>
<p>If you need to access the layout object in a block snippet, you need to pass it to the snippet manually.</p>
<figure class="code">
<pre><code class="language-php">&lt;?php foreach ($page-&gt;layout()-&gt;toLayouts() as $layout): ?&gt;
&lt;section class="6-column-grid" id="&lt;?= $layout-&gt;id() ?&gt;"&gt;
  &lt;?php foreach ($layout-&gt;columns() as $column): ?&gt;
  &lt;div class="column" style="--span:&lt;?= $column-&gt;span(6) ?&gt;"&gt;
    &lt;div class="blocks"&gt;
      &lt;?php foreach ($column-&gt;blocks() as $block): ?&gt;
      &lt;div class="block block-type-&lt;?= $block-&gt;type() ?&gt;"&gt;
        &lt;?php snippet('blocks/' . $block-&gt;type(), ['block' =&gt; $block, 'layout' =&gt; $layout]) ?&gt;
      &lt;/div&gt;
      &lt;?php endforeach ?&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;?php endforeach ?&gt;
&lt;/section&gt;
&lt;?php endforeach ?&gt;</code></pre>
</figure>