oncode of Craft CMS
5/11/2016 - 9:15 AM

Counter for looping modules.

Counter for looping modules.

{# loop through modules to know the amount of the individual modules #}
{% set moduleCountersLength = {} %}
{% for nr, module in entry.modules %}
    {% set moduleType = '' ~ module.type %}

    {% if not attribute(moduleCountersLength, moduleType) is defined %}
        {% set moduleCountersLength = moduleCountersLength|merge({ (moduleType) : 1 }) %}
    {% else %}
        {% set moduleCountersLength = moduleCountersLength|merge({ (moduleType) : moduleCountersLength[moduleType] + 1 }) %}
    {% endif %}
{% endfor %}

{# loop through modules to display them #}
{% set moduleCounters = {} %}
{% for nr, module in entry.modules %}
    {% set moduleType = '' ~ module.type %}

    {% if not attribute(moduleCounters, moduleType) is defined %}
        {% set moduleCounters = moduleCounters|merge({ (moduleType) : 1 }) %}
    {% else %}
        {% set moduleCounters = moduleCounters|merge({ (moduleType) : moduleCounters[moduleType] + 1 }) %}
    {% endif %}

    {% include ['_modules/' ~ module.type] with {
        c: module,
        nr: nr,
        first: loop.first,
        last: loop.last,
        moduleNr: moduleCounters[moduleType],
        modulesLength: moduleCountersLength[moduleType]
    } only %}
{% endfor %}
{% set moduleCounters = {} %}
{% for key, module in entry.modules %}
    {% set moduleType = '' ~ module.type %}

    {% if not attribute(moduleCounters, moduleType) is defined %}
        {% set moduleCounters = moduleCounters|merge({ (moduleType) : 1 }) %}
    {% else %}
        {% set moduleCounters = moduleCounters|merge({ (moduleType) : moduleCounters[moduleType] + 1 }) %}
    {% endif %}

    <div class="component content-container" data-component="{{ module.type }}" id="{{ module.type }}-{{ moduleCounters[moduleType] }}">
        {% include ['_modules/shared/' ~ module.type] with { c: module, nr: moduleCounters[moduleType] } only %}
    </div>
{% endfor %}