HUSKY - Product Filter for WooCommerce

Smart Designer — Niestandardowe elementy filtrów

To rozszerzenie umożliwia tworzenie niestandardowych elementów filtru

Strona demonstracyjna: https://demo-sd.products-filter.com/

Domyślnie WOOF SD ma 4 podstawowe elementy gotowe do dostosowania:

  • Checkbox (domyślnie)
  • Radio
  • Przełącznik
  • Kolor

Więcej niestandardowych elementów znajdziesz w WOOF SD Gallery. Jeśli masz pomysł na swój niestandardowy element, napisz do nas na wsparcie.

 


Górny panel

  • Powrót – powrót do listy elementów
  • Presety – administrator może zapisać bieżący zestaw opcji, a następnie zastosować go na innych elementach tego samego typu
  • Lista rozwijana ze wszystkimi możliwymi typami elementów w systemie. ‘Box tags‘ na powyższym ekranie to niestandardowy element umieszczony w szablonie potomnym WordPress. Jak stworzyć takie elementy, przeczytaj poniżej.
  • Lista rozwijana ze wszystkimi rzeczywistymi taksonomiami WooCommerce sklepu, tylko dla pomocy wizualnej podczas budowania elementu filtru. Używana również dla typu elementu ‘Color’ do przypisywania kolorów i obrazów do terminów taksonomii wybranej za pomocą tej listy rozwijanej (przeczytaj o Kolorze poniżej)
  • Resetuj – kliknij, aby zresetować wszystkie niestandardowe opcje bieżącego elementu filtru do ustawień domyślnych

Tworzenie i zastosowanie

  • W zakładce ‘Extensions‘ aktywuj rozszerzenie ‘Smart Designer‘ (jeśli nie jest aktywowane) i naciśnij przycisk Zapisz
  • Po przeładowaniu strony przejdź do zakładki ‘Smart Designer
  • Kliknij przycisk ‘Utwórz element
  • Ustaw tytuł nowego elementu (kliknij w jego pole)
  • Kliknij przycisk ‘Edytuj‘, aby wejść w opcje nowego elementu
  • Po wejściu w opcje elementu powinieneś wybrać jego typ: Checkbox, Radio, Przełącznik, Kolor lub inny, w zależności od zainstalowanych elementów w szablonie WordPress Twojej witryny (niestandardowe typy elementów opisane poniżej). Każdy typ ma własny zestaw opcji, które nie nakładają się na inne typy elementów!
  • Wszystkie podstawowe elementy z wyjątkiem przełączników mają również szablony układów (lista, kafelek lub radio, checkbox), wybierz ten, który odpowiada Twoim potrzebom.
  • Dla Twojej wygody możesz wybrać taksonomię, dla której tworzysz bieżący element
  • Baw się opcjami, korzystając z ich opisów, aby stworzyć żądane dostosowania
  • Wszystkie zmiany są zapisywane automatycznie przez AJAX
  • Gdy uznasz, że to wystarczy, możesz kliknąć przycisk ‘Presety‘ i zapisać tam swoje niestandardowe opcje dla przyszłych elementów (aby nie zaczynać od zera z nowym elementem)
  • Ostatnim krokiem jest przejście do zakładki ‘Structure‘ i przypisanie do taksonomii właśnie utworzonego typu elementu. Wszystkie elementy utworzone za pomocą Smart Designer mają tam prefiks w tytule ‘SD:
  • Naciśnij przycisk Zapisz poniżej
  • Przejdź na front sklepu i ciesz się 🙂

Porady dotyczące dostosowywania

  • Jeśli nie wiesz, jaką rodzinę czcionek zastosować dla tekstu, użyj słowa ‘inherit‘, co spowoduje zastosowanie rodziny czcionek bieżącego motywu WordPress. I pamiętaj, że jeśli zastosujesz jakąś rodzinę czcionek, powinna być ona obsługiwana przez Twój bieżący motyw WordPress i nie ma gwarancji, że ta czcionka jest dołączona do strony wp-admin, więc wyniki wizualne nie będą w 100% takie same po stronie backendu i frontendu.
  • Jeśli nie potrzebujesz koloru dla przezroczystych obrazów tła PNG, użyj słowa ‘transparent‘ zamiast kodu szesnastkowego koloru
  • Różne wzory obrazów możesz znaleźć w Google, używając frazy ‘background patterns images
  • Jeśli szukasz kolorów piękna, znajdziesz je tutaj, na przykład https://codebeautify.org/hex-to-pantone-converter
  • Konwerter kodów kolorów https://rgbacolorpicker.com/hex-to-rgba

  • Presety

    Presety zapisują Twoje opcje, abyś mógł zastosować je do podobnych elementów, co skraca czas produkcji. Możesz zrobić następujące rzeczy:

    • Tworzyć presety
    • Stosować presety do nowych elementów tego samego typu (checkbox, radio, color, switcher, dowolny typ niestandardowy) – wystarczy kliknąć na jego tytuł. Na przykład preset utworzony dla radio jest niewidoczny dla checkbox i odwrotnie.
    • Udostępniać swój preset jako informację tekstową innej osobie (programiści, współpracownicy, strony, itp …). Kliknij przycisk oka.
    • Importować kod presetu udostępniony przez kogoś. Kliknij przycisk edycji. Wklej kod. Naciśnij przycisk ‘Importuj‘.

    Kolor

    Element koloru – to specjalny element, który ma własną funkcjonalność – przypisywanie koloru i obrazów dla każdego terminu wybranej taksonomii (patrz rozwijana lista przed przyciskiem ‘Reset’) za pomocą wyskakującego okna

    Dane są przechowywane w specjalnych kluczach meta terminów:

    • woof_sd_color
    • woof_sd_color_image

    Te klucze mogą być przeciążone w pliku functions.php bieżącego motywu WordPress na wypadek, gdybyś już ustawił opcje kolorów dla swoich terminów w swój własny sposób, użyj następujących hooków:

    • get_woof_sd_term_color_key – hook do przechowywania danych kolorów terminów taksonomii
      add_filter('get_woof_sd_term_color', function ($term_id) {
          $meta_key = '__YOUR_OWN_KEY__';
          $color = get_term_meta($term_id, $meta_key, true);//you can use your own code to get term color using its $term_id
          return $color ? $color : 'inherit';
      });
    • get_woof_sd_term_color_image_key– hook do przechowywania danych obrazów terminów taksonomii
      add_filter('get_woof_sd_term_color_image', function ($term_id) {
          $meta_key = '__YOUR_OWN_KEY__';
          $img = get_term_meta($term_id, $meta_key, true);//you can use your own code to get term color using its $term_id
          return $img ? $img : '__YOU_CAN_PLACE_HERE_YOUR_DEFAULT_IMAGE_LINK__';
      });

    Elementy niestandardowe tylko dla programistów

    WOOF SD pozwala programistom tworzyć własne niestandardowe elementy, wszystko co jest potrzebne to dobry kod CSS+HTML. Oto jeden przykład: https://codepen.io/quinlo/pen/ReMRXz – to wystarczy, aby stworzyć element filtra, możesz go zobaczyć na stronie demo -> ‘Products Tags

    Na obrazku poniżej możesz zobaczyć, jak dodać taki element do systemu:

    • w bieżącym motywie WordPress (lepiej użyć motywu potomnego) utwórz folder ‘woof’
    • w folderze ‘woof‘ utwórz folder ‘ext
    • w folderze ‘ext‘ utwórz folder ‘smart_designer
    • w folderze ‘smart_designer‘ utwórz folder elements
    • w folderze ‘elements‘ utwórz folder o nazwie, jaką chcesz, użyj podkreślnika jeśli to konieczne
    • folder typu elementu niestandardowego musi zawierać następujące pliki:
      • css/styles.css – cały kod CSS elementu
      • js/ie.js – Twoja klasa JS, rozszerza IE, po prostu skopiuj i wklej:
        'use strict';
        import {IE, Helper} from '../../../import.js';//created automatically
        //This class is for constructor on backend
        //!!Rename class and put its name into file data.php field js_class
        export default class Boxtags extends IE {
            draw() {
                super.draw();
        
                Helper.ajax(null, {}, template => {
                    let terms = this.visor.sd.demo_taxonomies_terms;
                    let block = this.assemble_terms(terms, template);
        
                    this.container.insertAdjacentHTML('afterbegin', block);
                    if (this.container.querySelectorAll('input')) {
                        this.container.querySelectorAll('input')[0].setAttribute('checked', true);//for visual test
                    }
        
                    this.container.className = `woof_list_${this.template_folder}_sd_${this.template_num}`;
                    this.wrapper.appendChild(this.container);
                }, false, this.template_url);
            }
        }
        

        Zmień nazwę swojej klasy JS (zamiast Boxtags), to ważne i używane w pliku data.php

      • templates/tpl.php – może mieć również więcej plików jeśli to konieczne, nazwij je tpl-1.php, tpl-2.php, itd … Wszystkie pliki szablonów muszą być zadeklarowane w pliku data.php.
      • data.php – tutaj jest tablica opcji, których klucze są używane w pliku css/styles.css oraz w szablonach
        <?php
        
        if (!defined('ABSPATH'))
            die('No direct access allowed');
        //View is managed by the Data!
        return [
            'title' => 'Box tags', //!!
            'prefix' => 'boxtags_', //!!unique prefix for css vars
            'js_class' => 'Boxtags', //!!important, class name from ie.js
            'templates' => [
                0 => [
                    'title' => esc_html__('Template #1', 'woocommerce-products-filter'),
                    'use_subterms' => 0//will subterms display or only parent terms depending of the current taxonomy
                ]
            ],
            'template' => 0,
            'demo_taxonomies' => [
                0 => esc_html__('Example terms by real taxonomy', 'woocommerce-products-filter')
            ],
            'selected_demo_taxonomy' => 0, //demo data for visor
            'sections' => [
                [
                    'title' => esc_html__('Terms', 'woocommerce-products-filter'),
                    'table' => [
                        'header' => [
                            [
                                'value' => esc_html__('Options', 'woocommerce-products-filter'),
                                'width' => '50%',
                                'action' => 'save_custom_element_option'
                            ],
                            [
                                'value' => esc_html__('Description', 'woocommerce-products-filter'),
                                'width' => '50%',
                            ],
                        ],
                        'rows' => [
                            'padding_vertical' => [
                                ['value' => ['element' => 'ranger', 'value' => 8, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                                ['value' => esc_html__('Padding vertical', 'woocommerce-products-filter')]
                            ],
                            'padding_side' => [
                                ['value' => ['element' => 'ranger', 'value' => 12, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                                ['value' => esc_html__('Padding horizontal', 'woocommerce-products-filter')]
                            ],
                            'font_family' => [
                                ['value' => ['element' => 'text', 'value' => 'Segoe UI'], 'measure' => ''],
                                ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
                            ],
                            'font_size' => [
                                ['value' => ['element' => 'ranger', 'value' => 13, 'min' => 8, 'max' => 24], 'measure' => 'px'],
                                ['value' => esc_html__('Text font size', 'woocommerce-products-filter')]
                            ],
                            'font_weight' => [
                                ['value' => ['element' => 'select', 'value' => 400, 'options' => [
                                            '100' => '100',
                                            '200' => '200',
                                            '300' => '300',
                                            '400' => '400',
                                            '500' => '500',
                                            '600' => '600',
                                            '700' => '700',
                                            '800' => '800'
                                        ], 'conditions' => []]],
                                ['value' => 'Text font weight'], //cell
                            ],
                            'color' => [
                                ['value' => ['element' => 'color', 'value' => '#adadad']],
                                ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
                            ],
                            'margin_right' => [
                                ['value' => ['element' => 'ranger', 'value' => 5, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                                ['value' => esc_html__('Margin right', 'woocommerce-products-filter')]
                            ],
                            'margin_bottom' => [
                                ['value' => ['element' => 'ranger', 'value' => 5, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                                ['value' => esc_html__('Margin bottom', 'woocommerce-products-filter')]
                            ],
                            'bg_color_r' => [
                                ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color red channel', 'woocommerce-products-filter')]
                            ],
                            'bg_color_g' => [
                                ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color green channel', 'woocommerce-products-filter')]
                            ],
                            'bg_color_b' => [
                                ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color blue channel', 'woocommerce-products-filter')]
                            ],
                            'bg_color_op' => [
                                ['value' => ['element' => 'ranger', 'value' => 9, 'min' => 0, 'max' => 10], 'measure' => ''],
                                ['value' => esc_html__('Background color opacity', 'woocommerce-products-filter')]
                            ],
                            'bg_image' => [
                                ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
                                ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                            ],
                            'border_width' => [
                                ['value' => ['element' => 'ranger', 'value' => 2, 'min' => 0, 'max' => 10], 'measure' => 'px'],
                                ['value' => esc_html__('Border width', 'woocommerce-products-filter')]
                            ],
                            'border_style' => [
                                ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                            'dotted' => 'dotted',
                                            'dashed' => 'dashed',
                                            'solid' => 'solid',
                                            'double' => 'double',
                                            'groove' => 'groove',
                                            'ridge' => 'ridge',
                                            'inset' => 'inset',
                                            'outset' => 'outset',
                                            'none' => 'none',
                                            'hidden' => 'hidden'
                                        ]]],
                                ['value' => 'Border style'],
                            ],
                            'border_radius' => [
                                ['value' => ['element' => 'ranger', 'value' => 25, 'min' => 0, 'max' => 50], 'measure' => 'px'],
                                ['value' => esc_html__('Border radius', 'woocommerce-products-filter')]
                            ],
                            'border_color_r' => [
                                ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color red channel', 'woocommerce-products-filter')]
                            ],
                            'border_color_g' => [
                                ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color green channel', 'woocommerce-products-filter')]
                            ],
                            'border_color_b' => [
                                ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color blue channel', 'woocommerce-products-filter')]
                            ],
                            'border_color_op' => [
                                ['value' => ['element' => 'ranger', 'value' => 3, 'min' => 0, 'max' => 10], 'measure' => ''],
                                ['value' => esc_html__('Border color opacity', 'woocommerce-products-filter')]
                            ],
                            'checkbox_font_family' => [
                                ['value' => ['element' => 'text', 'value' => 'Font Awesome 5 Free'], 'measure' => '', 'before' => '"', 'after' => '"'],
                                ['value' => esc_html__('Checkbox font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
                            ],
                            'checkbox_font_size' => [
                                ['value' => ['element' => 'ranger', 'value' => 12, 'min' => 8, 'max' => 72], 'measure' => 'px'],
                                ['value' => esc_html__('Checkbox font size', 'woocommerce-products-filter')]
                            ],
                            'checkbox_content' => [
                                ['value' => ['element' => 'text', 'value' => "\f067"], 'measure' => '', 'before' => '"', 'after' => '"'],
                                ['value' => esc_html__('Checkbox content', 'woocommerce-products-filter'), 'help' => '#']
                            ],
                            'checkbox_content_selected' => [
                                ['value' => ['element' => 'text', 'value' => "\f00c"], 'measure' => '', 'before' => '"', 'after' => '"'],
                                ['value' => esc_html__('Checkbox content selected', 'woocommerce-products-filter'), 'help' => '#']
                            ],
                            'transition' => [
                                ['value' => ['element' => 'ranger', 'value' => 200, 'min' => 0, 'max' => 1000], 'measure' => 's'], //cell
                                ['value' => esc_html__('Transition (ms)', 'woocommerce-products-filter')] //cell
                            ],
                        ]
                    ]
                ],
                [
                    'title' => esc_html__('Hovered(Selected) Terms', 'woocommerce-products-filter'),
                    'table' => [
                        'header' => [
                            [
                                'value' => esc_html__('Options', 'woocommerce-products-filter'),
                                'width' => '50%',
                                'action' => 'save_custom_element_option'
                            ],
                            [
                                'value' => esc_html__('Description', 'woocommerce-products-filter'),
                                'width' => '50%'
                            ],
                        ],
                        'rows' => [
                            'selected_color' => [
                                ['value' => ['element' => 'color', 'value' => '#ffffff']],
                                ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
                            ],
                            'selected_bg_color_r' => [
                                ['value' => ['element' => 'ranger', 'value' => 18, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color red channel', 'woocommerce-products-filter')]
                            ],
                            'selected_bg_color_g' => [
                                ['value' => ['element' => 'ranger', 'value' => 187, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color green channel', 'woocommerce-products-filter')]
                            ],
                            'selected_bg_color_b' => [
                                ['value' => ['element' => 'ranger', 'value' => 212, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Background color blue channel', 'woocommerce-products-filter')]
                            ],
                            'selected_bg_color_op' => [
                                ['value' => ['element' => 'ranger', 'value' => 10, 'min' => 0, 'max' => 10], 'measure' => ''],
                                ['value' => esc_html__('Background color opacity', 'woocommerce-products-filter')]
                            ],
                            'selected_bg_image' => [
                                ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
                                ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                            ],
                            'selected_border_color_r' => [
                                ['value' => ['element' => 'ranger', 'value' => 27, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color red channel', 'woocommerce-products-filter')]
                            ],
                            'selected_border_color_g' => [
                                ['value' => ['element' => 'ranger', 'value' => 219, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color green channel', 'woocommerce-products-filter')]
                            ],
                            'selected_border_color_b' => [
                                ['value' => ['element' => 'ranger', 'value' => 248, 'min' => 0, 'max' => 255], 'measure' => ''],
                                ['value' => esc_html__('Border color blue channel', 'woocommerce-products-filter')]
                            ],
                            'selected_border_color_op' => [
                                ['value' => ['element' => 'ranger', 'value' => 10, 'min' => 0, 'max' => 10], 'measure' => ''],
                                ['value' => esc_html__('Border color opacity', 'woocommerce-products-filter')]
                            ],
                            'selected_border_width' => [
                                ['value' => ['element' => 'ranger', 'value' => 2, 'min' => 0, 'max' => 10], 'measure' => 'px'],
                                ['value' => esc_html__('Border width', 'woocommerce-products-filter')]
                            ],
                            'selected_border_style' => [
                                ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                            'dotted' => 'dotted',
                                            'dashed' => 'dashed',
                                            'solid' => 'solid',
                                            'double' => 'double',
                                            'groove' => 'groove',
                                            'ridge' => 'ridge',
                                            'inset' => 'inset',
                                            'outset' => 'outset',
                                            'none' => 'none',
                                            'hidden' => 'hidden'
                                        ]]],
                                ['value' => 'Border style'],
                            ],
                            'selected_scale' => [
                                ['value' => ['element' => 'ranger', 'value' => 100, 'min' => 50, 'max' => 200], 'measure' => ''], //cell
                                ['value' => esc_html__('Scale', 'woocommerce-products-filter')] //cell
                            ],
                        ]
                    ]
                ],
                [
                    'title' => esc_html__('Counter', 'woocommerce-products-filter'),
                    'table' => [
                        'header' => [
                            [
                                'value' => esc_html__('Options', 'woocommerce-products-filter'),
                                'width' => '50%',
                                'action' => 'save_custom_element_option'
                            ],
                            [
                                'value' => esc_html__('Description', 'woocommerce-products-filter'),
                                'width' => '50%',
                            ]
                        ],
                        'rows' => [
                            'counter_show' => [
                                ['value' => ['element' => 'switcher', 'value' => 'inline-flex', 'yes' => 'inline-flex', 'no' => 'none']], //cell
                                ['value' => esc_html__('Show counter', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_width' => [
                                ['value' => ['element' => 'ranger', 'value' => 14, 'min' => 10, 'max' => 72, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'],
                                ['value' => esc_html__('Min width', 'woocommerce-products-filter')]
                            ],
                            'counter_height' => [
                                ['value' => ['element' => 'ranger', 'value' => 14, 'min' => 10, 'max' => 72, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'],
                                ['value' => esc_html__('Min height', 'woocommerce-products-filter')]
                            ],
                            'counter_top' => [
                                ['value' => ['element' => 'ranger', 'value' => -2, 'min' => -100, 'max' => 100, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'], //cell
                                ['value' => esc_html__('Top', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_right' => [
                                ['value' => ['element' => 'ranger', 'value' => -3, 'min' => -100, 'max' => 100, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'],
                                ['value' => esc_html__('Right', 'woocommerce-products-filter')]
                            ],
                            'counter_font_size' => [
                                ['value' => ['element' => 'ranger', 'value' => 9, 'min' => 8, 'max' => 48, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'], //cell
                                ['value' => esc_html__('Text font size', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_color' => [
                                ['value' => ['element' => 'color', 'value' => '#777777', 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]]], //cell
                                ['value' => esc_html__('Text color', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_font_family' => [
                                ['value' => ['element' => 'text', 'value' => 'consolas', 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => ''], //cell
                                ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter')], //cell
                            ],
                            'counter_font_weight' => [
                                ['value' => ['element' => 'select', 'value' => 500, 'options' => [
                                            '100' => '100',
                                            '200' => '200',
                                            '300' => '300',
                                            '400' => '400',
                                            '500' => '500',
                                            '600' => '600',
                                            '700' => '700',
                                            '800' => '800'
                                        ], 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]]],
                                ['value' => 'Text font weight'], //cell
                            ],
                            'counter_side_padding' => [
                                ['value' => ['element' => 'ranger', 'value' => 0, 'min' => 0, 'max' => 48, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'], //cell
                                ['value' => esc_html__('Side padding', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_bg_color' => [
                                ['value' => ['element' => 'color', 'value' => '#ffffff', 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]]], //cell
                                ['value' => esc_html__('Background color', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_bg_image' => [
                                ['value' => ['element' => 'image', 'value' => '', 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'before' => 'url(', 'after' => ')'], //cell
                                ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_border_width' => [
                                ['value' => ['element' => 'ranger', 'value' => 1, 'min' => 0, 'max' => 10, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => 'px'], //cell
                                ['value' => esc_html__('Border width', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_border_radius' => [
                                ['value' => ['element' => 'ranger', 'value' => 50, 'min' => 0, 'max' => 50, 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]], 'measure' => '%'], //cell
                                ['value' => esc_html__('Border radius', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_border_color' => [
                                ['value' => ['element' => 'color', 'value' => '#adadad', 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]]], //cell
                                ['value' => esc_html__('Border color', 'woocommerce-products-filter')] //cell
                            ],
                            'counter_border_style' => [
                                ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                            'dotted' => 'dotted',
                                            'dashed' => 'dashed',
                                            'solid' => 'solid',
                                            'double' => 'double',
                                            'groove' => 'groove',
                                            'ridge' => 'ridge',
                                            'inset' => 'inset',
                                            'outset' => 'outset',
                                            'none' => 'none',
                                            'hidden' => 'hidden'
                                        ], 'conditions' => [
                                            'hide' => [
                                                'counter_show' => 'none'//if this selected element will be hidden
                                            ]]]],
                                ['value' => 'Border style'], //cell
                            ],
                        ]
                    ]
                ],
            ]
        ];
        
        
      • W pliku data.php zwróć uwagę na pola: title – nazwa Twojego elementu w górnym panelu SD, prefix – unikalny prefiks dla zmiennych CSS, js_class – ważne, nazwa klasy z ie.js
      • Następnie w pliku tpl.php dodaj swój kod HTML:
        <?php $custom_postfix = 'boxtags'; ?>
        <div class="woof-sd-ie woof-sd-ie-<?php echo $custom_postfix ?> woof-sd-ie-<?php echo $custom_postfix ?>___TERM_ID__ __CLASS__">
            <input type="checkbox" hidden id="__ID__"
                   data-tax="__DATA_TAX__" 
                   name="__SLUG__" data-term-id="__TERM_ID__" 
                   value="__VALUE__" __CHECKED__ __DISABLED__
                   onchange="woof_checkbox_process_data(this, this.checked)"
                   hidden
                   />
            <label for="__ID__">
                <span>__CONTENT__ <span class="woof-sd-ie-count">__COUNT__</span></span>
            </label>
        
            <input type="hidden" value="__TERM_NAME__" data-anchor="woof_n___DATA_ANCHOR__" />
        
        </div>

        Nie zapomnij zmienić zmiennej $custom_postfix na nazwę folderu Twojego elementu (to samo pole prefix z pliku data.php).

        • Szablon ma specjalne ciągi znaków, które są zastępowane na bieżąco, gdy WOOF SD wyświetla tagi na froncie:
          • __TERM_ID__ – ID bieżącego wyświetlanego terminu
          • __CLASS__ – systemowa klasa CSS
          • __DATA_TAX__ – nazwa taksonomii bieżącego terminu
          • __SLUG__ – slug bieżącego terminu
          • __ID__ – automatycznie generowane ID dla etykiety
          • __VALUE__ – wybrana wartość tutaj
          • __CHECKED__ – powinno być w checkbox lub radio, aby uczynić je wybranym lub nie
          • __DISABLED__ – powinno być w checkbox lub radio, aby uczynić je wyłączonym lub nie
          • __CONTENT__ – tytuł terminu do wyświetlenia klientom
          • __COUNT__ – liczba terminów
          • __RESET_RADIO_BTN__ – używane tylko dla radio, aby zresetować wybrany przycisk radio na froncie
          • __DATA_ANCHOR__ – zawsze wymagane dla ukrytego inputa
          • __TERM_NAME__ – nazwa bieżącego terminu
        • Użyj wrappera div zawsze tak samo jak w przykładzie powyżej, a wewnątrz swojego kodu HTML. Oba inputy, jako checkbox lub radio + ukryte inputy zawsze muszą być!
    • Pola:

      • templates – dodaje szablony układu tego samego elementu lub jego zachowania (radio lub checkbox).
      • template – numer szablonu wybranego domyślnie
      • demo_taxonomies – użyj tak jak w kodzie powyżej, potrzebne do wyświetlania taksonomii sklepu w konstruktorze
      • sections – tutaj w wierszach umieszczone są opcje, mają one własne unikalne klucze (względem pliku data.php) i są różnych typów:
        • ranger – tworzy kontrolkę zakresu z suwakiem od min do max
          'padding_vertical' => [
                ['value' => ['element' => 'ranger', 'value' => 8, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                ['value' => esc_html__('Padding vertical', 'woocommerce-products-filter')]
            ],

          Zwróć uwagę na pole ‘measure‘, powinny być odpowiednie jednostki miary

        • text – pole tekstowe
          'font_family' => [
              ['value' => ['element' => 'text', 'value' => 'Segoe UI'], 'measure' => ''],
              ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
          ],
        • select – rozwijana lista do wyboru dowolnych predefiniowanych wartości
          'font_weight' => [
              ['value' => ['element' => 'select', 'value' => 400, 'options' => [
                          '100' => '100',
                          '200' => '200',
                          '300' => '300',
                          '400' => '400',
                          '500' => '500',
                          '600' => '600',
                          '700' => '700',
                          '800' => '800'
                      ], 'conditions' => []]],
              ['value' => 'Text font weight'], //cell
          ],
        • color – generuje input koloru
          'color' => [
              ['value' => ['element' => 'color', 'value' => '#adadad']],
              ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
          ],
        • image – generuje pole tekstowe i przycisk obok, aby wybrać obraz z galerii mediów strony
          'bg_image' => [
              ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
              ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
          ],
        • We wszystkich elementach pole value ma wartość domyślną, która musi być taka sama jak w styles.css
        • wszystkie klucze wewnątrz pliku CSS muszą być używane z prefiksem ‘–woof-sd-ie-‘ + prefiks pobrany z pliku data.php -> pole ‘prefix‘!
    • Plik woof/ext/smart_designer/import.js jest tworzony automatycznie przez system i nie powinien być zmieniany ręcznie!!
    • Krótko mówiąc, możesz pobrać przykład niestandardowego elementu i odtworzyć go przy użyciu własnego CSS i HTML