/PageBlacklist

Page blacklisting helper module for ProcessWire

Primary LanguagePHPCreative Commons Zero v1.0 UniversalCC0-1.0

PageBlacklist v0.2.1 beta

Page blacklisting helper module for ProcessWire.

With this simple module you can easily add pages to a global blacklist and use it for filtering of subsequent selector queries.

Usage

For ease of use, the modules adds a $pageBlacklist variable to the template scope. Usualy you will only need one method:

Add to blacklist

$pageBlacklist->add($something);

$something can be many things and is just a wraper for the internal API. Here is a list of possible values:

$pageBlacklist->add(1012); 
// [integer]
// Will assume page with the ID '1212'.

$pageBlacklist->add($pageObject); 
// [Page]
// Instance of Page adds this page.

$pageBlacklist->add($pageArray); 
// [PageArray]
// Given an instance of PageArray, will add every page in that array.

// Also, you can add arrays containing IDs or Page objects:

$pageBlacklist->add(array(
    1012, 1013, 1025
));

// or

$pageBlacklist->add(array(
    $pageObject, $pageObject2, $pageObject3
));

Removing pages from blacklist

Currently you are only able to remove pages by passing Page objects. More possibilities will be implemented soon:

$pageBlacklist->removePage($pageObject);

Also you can clear the complete blacklist:

$pageBlacklist->reset();

Using the blacklist / retrieving data

The simples approach is to add the $pageBlacklist variable to any selector:

$list = $pages->find('template="basic-page"' . $pageBlacklist);

This will modify the selector and create something like:

'template="basic-page" id!=1012|1013|1025'

Beware of thy cache!

When using markup cache, this module is naturally not able to collect the pages from cached code. Subsequent selectors may include pages from cached content.

Currently I'm storing some metainfo to the cache as an addition to evade the problem on personal projects.

Complete list of methods

tbc