{# @var craft \craft\web\twig\variables\CraftVariable #} {# @var entry \craft\elements\Entry #} {# Set Active Class ------------------------------------------------------------ {% import '_partials/macros/_macro-mergedPosts.html' as macroMergedPosts %} {{ macroMergedPosts.mergedPosts('news', -1, 'cn') }} #} {% macro mergedPosts(field, channel, channelOrder, maxPostCount) %} {# -- Set Default Variables -- #} {% set field = field | default(null) %} {% set channel = channel | default(null) %} {% set channelOrder = channelOrder | default('postDate desc') %} {% set maxPostCount = maxPostCount | default(12) %} {% set finalEntries = null %} {% set entriesFromFieldCount = 0 %} {% set entriesFromField = [] %} {% set excludePostsIds = [] %} {% set excludePosts = [] %} {# -- If field exists do this -- #} {% if field ?? null %} {% set entriesFromFieldCount = field | length %} {% set entriesFromField = field.all() %} {% set excludePostsIds = field.ids() %} {% set excludePosts = excludePostsIds | join(', not ') %} {% endif %} {# -- Calculate Entry Count -- #} {% set entriesCount = (maxPostCount - entriesFromFieldCount) %} {% set finalEntries = entriesFromField %} {# -- Some Condition Magic -- #} {% if entriesCount == 0 %} {% set finalEntries = entriesFromField %} {% elseif entriesCount == maxPostCount %} {% set finalEntries = craft.entries.section(channel).limit(entriesCount).orderBy(channelOrder) %} {% else %} {% set finalEntries = craft.entries.section(channel).id('and, not '~excludePosts).limit(entriesCount).orderBy(channelOrder) %} {% set finalEntries = finalEntries | merge(entriesFromField) %} {% endif %} {# -- Output -- #} {% return finalEntries %} {% endmacro %}{# @var craft \craft\web\twig\variables\CraftVariable #} {# @var entry \craft\elements\Entry #} {# Set Active Class ------------------------------------------------------------ {% import '_partials/macros/_macro-mergedPosts.html' as macroMergedPosts %} {{ macroMergedPosts.mergedPosts('news', -1, 'cn') }} #} {% macro mergedPosts(field, channel, channelOrder, maxPostCount) %} {# -- Set Default Variables -- #} {% set field = field | default(null) %} {% set channel = channel | default(null) %} {% set channelOrder = channelOrder | default('postDate desc') %} {% set maxPostCount = maxPostCount | default(12) %} {% set finalEntries = null %} {% set entriesFromFieldCount = 0 %} {% set entriesFromField = [] %} {% set excludePostsIds = [] %} {% set excludePosts = [] %} {# -- If field exists do this -- #} {% if field ?? null %} {% set entriesFromFieldCount = field | length %} {% set entriesFromField = field.all() %} {% set excludePostsIds = field.ids() %} {% set excludePosts = excludePostsIds | join(', not ') %} {% endif %} {# -- Calculate Entry Count -- #} {% set entriesCount = (maxPostCount - entriesFromFieldCount) %} {% set finalEntries = entriesFromField %} {# -- Some Condition Magic -- #} {% if entriesCount == 0 %} {% set finalEntries = entriesFromField %} {% elseif entriesCount == maxPostCount %} {% set finalEntries = craft.entries.section(channel).limit(entriesCount).orderBy(channelOrder).all() %} {% else %} {% set finalEntries = craft.entries.section(channel).id('and, not '~excludePosts).limit(entriesCount).orderBy(channelOrder).all() %} {% set finalEntries = finalEntries | merge(entriesFromField) %} {% endif %} {# -- Output -- #} {% return finalEntries %} {% endmacro %}