products_collection

Позволяет формировать коллекции товаров с собственным хешем.

Доступно начиная с версии 5.1.0.

Shop-Script

Входящие параметры (передаются по ссылке)

$params['collection'] object Экземпляр класса shopProductsCollection для доступа к коллекции товаров.
$params['auto_title'] bool Флаг, обозначающий необходимость применения к коллекции товаров стандартного текстового заголовка.
$params['add'] bool Флаг, обозначающий необходимость добавлять новые условия формирования коллекции при повторном (рекурсивном) вызове методов класса shopProductsCollection.
… код плагина …

Результат работы плагина

$return
true, если запрошен хеш, ожидаемый данным плагином; false — во всех остальных случаях. Хеш должен представлять собой идентификатор плагина, символ косой черты (/) и дополнительные параметры. Или только идентификатор плагина — без косой черты и параметров, если они не нужны. Обе эти части — идентификатор и параметры — возвращает в виде массива метод getHash() экземпляра класса shopProductsCollection, доступного в значении ключа collection в параметре обработчика хука.
Shop-Script

Пример кода плагина

PHP

public function productsCollection($params)
{
    /** @var shopProductsCollection */
    $collection = $params['collection'];
    $hash = $collection->getHash();

    // Accept only simple hash in this example; e.g., ?action=products#/products/hash=myplugin
    if (is_array($hash) && count($hash) == 1 && $hash[0] == $this->id) {
        //add your WHERE condition
        $collection->addWhere('...'); 
        return true;
    } else {
        return false;
    }

    /*
    // Accept only complex hashes in this example; e.g., ?action=products#/products/hash=myplugin/foo
    if (count($hash) == 2 && $hash[0] == 'myplugin') {
        switch ($hash[1]) {
            case 'foo':
                $collection->addWhere('...'); //add a WHERE condition
                return true;
            case 'bar':
                $collection->addWhere('...'); //add another WHERE condition
                return true;
            default:
                return false;
        }
    }
    */
}