Used to loop through faceted menu filter options.

shopp('collection', 'facet-options', 'options')

@param string $object the object or object.tag combination, if object.tag is used, the tag parameter can be omitted
@param string $tag the tag, can be hyphenated or not. Prefix with 'get' as shorthand for the return=true option
@param mixed $options associative array, or url-style name=value pairs separated by ampersands (&). Each pair is passed to the theme api tag as an option.
@returns boolean true while looping through faceted menu filter options, false when at the end of the loop.

Alternative Forms

shopp('collection.facet-options', 'options');


Used to loop through faceted menu filter options.

If a product category has faceted menus, this loop iterator can be used to loop through the faceted menu filter options for each facet menu.

Universal Options

All Theme API calls have these options.

  • return: when set to true, 1, or on, this option forces the tag to return the value instead of displaying/echoing the value to the page. Alternatively, prefix the tag parameter with get to get the same effect. All theme api tags that return a boolean value will return by default.
  • echo: when set to false, 0, or off, this option forces the tag to display the value to the page. This is the default for all non-boolean tags.
  • is: when set to true, 1, or on, this option will evaluate the return of the theme api call as a boolean true or false value. See how values are converted to boolean.




while (shopp('collection','facet-options')) {}

Loop through faceted menus and then loop through faceted menu filter options

while ( shopp('collection.facet-menus') ) {
    if ( shopp('collection.facet-menu-has-options'))
        while ( shopp('collection.facet-options') ) {}

Loop through faceted menus and menu filter options, and display toggle links

<?php if ( is_a(ShoppCollection(),'ProductCategory') && shopp('collection.has-faceted-menu') ) : ?>

<ul class="faceted-menu">
        // Loop through faceted menus
        while(shopp('collection.facet-menus')) :

        // Skip active filters and menus with no options
        if ( shopp('collection.facet-filtered') ) continue;
        if ( ! shopp('collection.facet-menu-has-options')) continue;
        // current facet filter name
        shopp('collection.facet-name'); ?></h4>
        <ul class="facet-option <?php
            // current facet filter slug
            shopp('collection.facet-slug'); ?>">
            // Loop through filter options for this faceted menu
            while(shopp('collection.facet-options')) : ?>
                    <a href="<?php
                        // toggle url for current filter option
                        esc_url(shopp('collection.facet-option-link')); ?>"><?php
                        // the full label of the facet filter option
                        shopp('collection.facet-option-label'); ?></a>&nbsp;
                    <span class="count"><?php
                    // the number of products sharing this facet
                    shopp('collection.facet-option-count'); ?></span>
            <?php endwhile; ?>
    <?php endwhile; ?>

<?php endif; ?>

Loop through faceted menus and faceted menu filter options and display checkbox inputs

<ul class="faceted-menu">
<?php while(shopp('category','facet-menus')): ?>
    <?php if (shopp('category','facet-menu-has-options')): ?>
        <h4><?php shopp('category','facet-name'); ?></h4>
            <?php while(shopp('category','facet-options')): ?>
            <span class="inline"><?php shopp('category','facet-option-input',array(
                'label' => shopp('category','get-facet-option-label').' <span class="count">'.shopp('category','get-facet-option-count').'</span>'
                )); ?>
            <?php endwhile; ?>
    <?php endif; ?>
<?php endwhile; ?>

See Also

You must be logged in to post a comment.

© Ingenesis Limited. Shopp™ is a registered trademark of Ingenesis Limited.