RepeaterDepthHelper by Robin S

Enforces some depth rules for Repeater fields on save, and provides a helper method that returns a nested depth structure for a Repeater field value.

Repeater Depth Helper

A module for ProcessWire CMS/CMF. This module does two things relating to Repeater fields that have the "Item depth" option enabled:

  1. It enforces some depth rules for Repeater fields on save. Those rules are:

    1. The first item must have a depth of zero.
    2. Each item depth must not be more than one greater than previous item depth.
  2. It provides a RepeaterPageArray::getDepthStructure helper method that returns a nested depth structure for a Repeater field value.

Helper method


The module adds a RepeaterPageArray::getDepthStructure method that returns a multi-dimensional array where the key is the page ID and the value is an array of nested "child" items, or null if there are no nested children.

Example

rdh-tracy

The module doesn't make any assumptions about how you might want to use the depth structure array, but here is a way you might use it to output a nested unordered list.

// Output a nested unordered list from a depth structure array
function outputNestedList($depth_structure, $repeater_items) {
    $out = "<ul>";
    foreach($depth_structure as $page_id => $nested_children) {
        $out .= "<li>" . $repeater_items->get("id=$page_id")->title;
        // Go recursive if there are nested children
        if(is_array($nested_children)) $out .= outputNestedList($nested_children, $repeater_items);
        $out .= "</li>";
    }
    $out .= "</ul>";
    return $out;
}

$repeater_items = $page->my_repeater;
$depth_structure = $repeater_items->getDepthStructure();
echo outputNestedList($depth_structure, $repeater_items);

rdh-list

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

  • New TinyMCE 6.2.0 Inputfield released for ProcessWire— More
    28 October 2022
  • This week we take a look at a new rich text editor for ProcessWire, why we chose it, some highlights, screenshots, and why we think you’ll like it— More
    21 October 2022
  • This week we have ProcessWire 3.0.206 on the dev branch and a new version of the ProDevTools UserActivity module, which we'll take a closer look at in this post— More
    7 October 2022

Latest news

  • ProcessWire Weekly #447
    In the 447th issue of ProcessWire Weekly we'll share the latest core updates, introduce a new third party module called RockVideoThumbnailGrabber, and more. Read on!
    Weekly.pw / 3 December 2022
  • New rich text editor for ProcessWire
    This week we take a look at a new rich text editor for ProcessWire, why we chose it, some highlights, screenshots, and why we think you’ll like it.
    Blog / 21 October 2022
  • Subscribe to weekly ProcessWire news

“…building with ProcessWire was a breeze, I really love all the flexibility the system provides. I can’t imagine using any other CMS in the future.” —Thomas Aull