thelia/choice-filter-module

Allows the management of filters in front by template and category

Installs: 9 442

Dependents: 2

Suggesters: 0

Security: 0

Stars: 1

Watchers: 6

Forks: 2

Open Issues: 0

Type:thelia-module

2.1.1 2022-08-30 11:21 UTC

This package is auto-updated.

Last update: 2024-03-29 03:32:38 UTC


README

This module allows the management of filters in front by template and category

Installation

Manually

  • Copy the module into <thelia_root>/local/modules/ directory and be sure that the name of the module is ChoiceFilter.
  • Activate it in your thelia administration panel

Composer

Add it in your main thelia composer.json file

composer require thelia/choice-filter-module:~2.0.0

Usage

You can choose the position of the filters

  • When you edit a template
  • When you edit a category

Loop

[choice_filter]

Input arguments

Argument Description
template_id id of template
category_id id of category
order position or position_reverse

Output arguments

Variable Description
$TYPE feature or attribute or other
$ID id of filter
$POSITION position of filter
$VISIBLE visible of filter

Exemple

For a template

{loop name="choice_filter" type="choice_filter" template_id=$template_id}
    {if $TYPE == "feature" and $VISIBLE}
        {loop type="feature" name="feature-$ID" id=$ID}
            {* your code *}
        {/loop}
    {elseif $TYPE == "attribute" and $VISIBLE}
        {loop type="attribute" name="attribute-$ID" id=$ID}
            {* your code *}
        {/loop}
    {elseif $TYPE == "brand" and $VISIBLE}
        {* your code *}
    {elseif $TYPE == "price" and $VISIBLE}
        {* your code *}
    {/if}
{/loop}

For a category

{loop name="choice_filter" type="choice_filter" category_id=$category_id}
    {if $TYPE == "feature" and $VISIBLE}
        {loop type="feature" name="feature-$ID" id=$ID}
            {* your code *}
        {/loop}
    {elseif $TYPE == "attribute" and $VISIBLE}
        {loop type="attribute" name="attribute-$ID" id=$ID}
            {* your code *}
        {/loop}
    {elseif $TYPE == "brand" and $VISIBLE}
        {* your code *}
    {elseif $TYPE == "price" and $VISIBLE}
        {* your code *}
    {/if}
{/loop}

for performance, it is best to use a cache block http://doc.thelia.net/en/documentation/templates/smarty/cache.html

{cache key="choice-filter" ttl=600 category_id==$category_id}
    {loop name="choice_filter" type="choice_filter" category_id=$category_id}
        {if $TYPE == "feature" and $VISIBLE}
            {loop type="feature" name="feature-$ID" id=$ID}
                {* your code *}
            {/loop}
        {elseif $TYPE == "attribute" and $VISIBLE}
            {loop type="attribute" name="attribute-$ID" id=$ID}
                {* your code *}
            {/loop}
        {elseif $TYPE == "brand" and $VISIBLE}
            {* your code *}
        {elseif $TYPE == "price" and $VISIBLE}
            {* your code *}
        {/if}
    {/loop}
{/cache}