Hugo’s symdiff
function returns the symmetric difference between two collections. That’s just a fancy way to say: “give me the things that are in either of these collections but not in both”.
So, if you have all posts in one collection, $posts
, and posts from the category you want to exclude in another collection, $hidden_posts
, you can get all posts sans excluded posts with $posts | symdiff $hidden_posts
. Something like this:
{{ $posts := where site.Pages "Type" "post" }}
{{ $hidden_posts := where $posts "Params.categories" "intersect" (slice "Hidden") }}
{{ $posts = $posts | symdiff $hidden_posts }}
In the example above, $posts
will contain all posts except posts in the category Hidden .