Dokumentacja dla deweloperów
Przycisk Dodaj do listy Listonic pozwala użytkownikom dodawać składniki lub artykuły zakupowe bezpośrednio do ich listy zakupów w aplikacji Listonic. Działa na każdej stronie internetowej lub aplikacji webowej i wymaga tylko kilku linijek kodu JavaScript.
Konfiguracja w 2 minuty
Uruchom przycisk listy zakupów w trzech prostych krokach.
data-items
<!-- Przycisk Dodaj do listy Listonic -->
<div class="listonic-button"
data-items="Mleko, Jajka, Chleb"
data-name="Moja lista zakupów">
</div>
<script src="widget/listonic-button.js" defer></script>
Przegląd i korzyści#
Integracja Dodaj do listy została zaprojektowana tak, aby była lekka i łatwa do osadzenia. Możesz ją używać na dwa główne sposoby, w zależności od Twojego przypadku użycia:
- Przycisk niestandardowy – Idealny dla predefiniowanych list produktów. Masz pełną kontrolę nad tym, które produkty są dodawane.
- Przycisk automatyczny – Automatycznie wyodrębnia produkty ze struktury HTML. Idealny dla blogów kulinarnych i uporządkowanej treści.
Obie metody używają prostego fragmentu kodu JavaScript i hostowanych skryptów dostarczonych przez Listonic. Możesz zacząć od Przycisku niestandardowego dla maksymalnej kontroli lub Przycisku automatycznego, aby automatycznie konwertować istniejące listy składników na przyciski Dodaj do listy.
Listonic jest używany przez ponad 20 milionów użytkowników na całym świecie i obsługuje ponad 40 języków. Twoi odwiedzający automatycznie otrzymują natywne doświadczenie listy zakupów.
Parametry przycisku niestandardowego#
Produkty do dodania do listy zakupów. Rozdziel produkty przecinkami. Linki HTML z tagami <a> są obsługiwane wewnątrz produktów.
Domyślna nazwa listy zakupów. Jeśli nie podano, użytkownik może wybrać lub utworzyć listę w interfejsie Listonic.
Obiekt JSON z właściwościami stylizacji. Dostępne właściwości: primaryColor, iconColor, textColor, borderRadius, border, padding, buttonText, fontFamily, fontSize, fontWeight, fontStyle, iconStyle, iconHidden, iconPosition, customCSS.
Parametry przycisku automatycznego#
Przycisk automatyczny jest konfigurowany za pomocą obiektu listonic_auto. Ustaw jego właściwości przed załadowaniem skryptu.
Nazwa klasy CSS elementu HTML zawierającego listę składników. Widget przeskanuje ten element w poszukiwaniu elementów listy.
Minimalna liczba produktów wymagana, aby przycisk został wyświetlony. Przydatne do filtrowania kontenerów z zbyt małą liczbą produktów.
Ustaw na true, aby ukryć pasek boczny i użyć bardziej zwartego trybu wyświetlania. Domyślnie false.
Obiekt stylizacji stosowany do wszystkich automatycznie generowanych przycisków. Obsługuje te same właściwości co data-style (np. primaryColor, borderRadius, fontFamily).
Stylizacja przycisku#
Dostosuj wygląd przycisku Listonic za pomocą atrybutu data-style. Przekaż obiekt JSON z właściwościami stylizacji, które chcesz nadpisać.
Niestandardowa stylizacja#
Użyj atrybutu data-style na dowolnym elemencie przycisku, aby zastosować niestandardowe style:
<div class="listonic-button"
data-items="Mleko, Jajka, Chleb"
data-name="Moja lista"
data-style='{
"primaryColor": "#FF6B35",
"iconColor": "#ffffff",
"textColor": "#ffffff",
"borderRadius": "50px",
"fontFamily": "Roboto, sans-serif",
"fontSize": "16px",
"fontWeight": "600",
"buttonText": "Dodaj do listy zakupów",
"iconStyle": "shopping-cart"
}'>
</div>
<script src="widget/listonic-button.js" defer></script>
Dostępne właściwości stylizacji
| Właściwość | Opis |
|---|---|
primaryColor |
Główny kolor tła przycisku |
iconColor |
Kolor wypełnienia ikony |
textColor |
Kolor tekstu przycisku |
borderRadius |
Promień zaokrąglenia przycisku (np. "50px", "8px") |
border |
Wartość CSS border (np. "2px solid #ccc") |
padding |
Padding przycisku |
buttonText |
Niestandardowy tekst etykiety przycisku |
fontFamily |
Rodzina czcionek tekstu przycisku |
fontSize |
Rozmiar czcionki tekstu przycisku |
fontWeight |
Grubość czcionki tekstu przycisku |
fontStyle |
Styl czcionki (np. "italic") |
iconStyle |
Typ ikony: "clipboard-check", "shopping-cart", "list", "plus" lub "check" |
iconHidden |
Ustaw na true, aby ukryć ikonę |
iconPosition |
Ustaw na "right", aby przenieść ikonę za tekst |
customCSS |
Surowy ciąg CSS dla zaawansowanej personalizacji |
Treść dynamiczna (AJAX/SPA)#
Jeśli wstawiasz treść dynamicznie (na przykład przez AJAX lub framework frontendowy), możesz tworzyć i inicjalizować przyciski Listonic programowo za pomocą API ListonicButton.initButton.
// Po załadowaniu treści przez AJAX
function addListonicButton(items, listName, containerId, style) {
const container = document.getElementById(containerId);
// Utwórz element przycisku z atrybutami data
const el = document.createElement('div');
el.className = 'listonic-button';
el.dataset.items = items.join(', ');
el.dataset.name = listName;
if (style) {
el.dataset.style = JSON.stringify(style);
}
container.appendChild(el);
// Zainicjalizuj przycisk przez publiczne API
if (window.ListonicButton) {
window.ListonicButton.initButton(el);
}
}
Upewnij się, że skrypt widget/listonic-button.js jest już załadowany przed wywołaniem ListonicButton.initButton(). Skrypt musi być dołączony raz na stronie.
Integracja z frameworkami#
Poniższe przykłady pokazują, jak zintegrować przyciski Listonic z popularnymi frameworkami JavaScript. Te komponenty używają atrybutów v2 data-* i API ListonicButton.initButton.
Używając frameworków: (1) Załaduj widget/listonic-button.js raz (np. w HTML lub przez loader skryptów), (2) Używaj atrybutów data-* na elementach div, (3) Wywołaj ListonicButton.initButton(el) po dodaniu elementu do DOM.
React
import React, { useEffect, useRef } from 'react';
const ListonicButton = ({ items, name, style }) => {
const ref = useRef(null);
useEffect(() => {
if (ref.current && window.ListonicButton) {
window.ListonicButton.initButton(ref.current);
}
}, [items, name]);
return (
<div
ref={ref}
className="listonic-button"
data-items={items}
data-name={name}
data-style={style ? JSON.stringify(style) : undefined}
/>
);
};
export default ListonicButton;
Vue.js
<template>
<div ref="buttonEl"
class="listonic-button"
:data-items="items"
:data-name="name"
:data-style="styleJson"></div>
</template>
<script>
export default {
props: {
items: { type: String, required: true },
name: { type: String, default: 'Lista zakupów' },
style: { type: Object, default: null }
},
computed: {
styleJson() {
return this.style ? JSON.stringify(this.style) : undefined;
}
},
mounted() {
if (window.ListonicButton) {
window.ListonicButton.initButton(this.$refs.buttonEl);
}
}
}
</script>
Przewodniki platformowe#
WordPress
- W edytorze Gutenberg dodaj blok "Własny HTML" tam, gdzie chcesz umieścić przycisk
- Wklej kompletny kod przycisku Listonic do bloku
- Dla skryptu użyj wtyczki takiej jak "Insert Headers and Footers", aby dodać go na całej stronie, lub dołącz go w bloku Własny HTML
Shopify
- Przejdź do Sklep online → Motywy → Edytuj kod
- Dodaj HTML przycisku do szablonu produktu (
product-template.liquid) - Dodaj skrypt Listonic do
theme.liquidprzed</body>
Wix
- Dodaj element "Embed" lub "HTML iframe" do swojej strony
- Wklej kompletny kod przycisku włącznie ze skryptem
- Dostosuj rozmiar elementu, aby pasował do przycisku
Squarespace
- Dodaj blok "Kod" do swojej strony
- Wklej kompletny kod przycisku Listonic
- Zapisz i podejrzyj stronę
Rozwiązywanie problemów#
Typowe problemy
Przycisk się nie pojawia
- Upewnij się, że URL skryptu jest poprawny i dostępny
- Sprawdź, czy element kontenera ma klasę
listonic-button - Zweryfikuj, że nie ma błędów JavaScript w konsoli
- Upewnij się, że
data-itemsjest ustawiony na elemencie przed załadowaniem skryptu
Produkty nie są dodawane
- Sprawdź, czy produkty są oddzielone przecinkami w atrybucie
data-items - Upewnij się, że treść nie zawiera nieprawidłowego HTML
- Dla przycisku automatycznego zweryfikuj, że
entryClasswlistonic_autopasuje do Twojego HTML
Wiele przycisków powoduje konflikty
- Użyj oddzielnych elementów
<div class="listonic-button">dla każdego przycisku - Dołącz skrypt tylko raz na stronie
Kompatybilność przeglądarek
Widget Listonic obsługuje wszystkie nowoczesne przeglądarki:
- Chrome (desktop i mobile)
- Firefox
- Safari (desktop i iOS)
- Edge
Widget używa standardowej funkcjonalności JavaScript obsługiwanej przez wszystkie nowoczesne przeglądarki.
Wskazówki debugowania
- Otwórz narzędzia deweloperskie przeglądarki (F12) i sprawdź konsolę pod kątem błędów
- Sprawdź element przycisku, aby upewnić się, że ma poprawne atrybuty
data-* - Zweryfikuj, czy publiczne API jest dostępne: wpisz
window.ListonicButtonw konsoli - Sprawdź zakładkę Network, aby upewnić się, że skrypt się załadował (status 200)
Dobre praktyki#
Wydajność i umiejscowienie skryptów
- Umieszczaj tag skryptu z atrybutem
defer, aby nie blokował początkowego renderowania strony - Dla stron z wieloma przyciskami używaj oddzielnych elementów
<div class="listonic-button">— skrypt obsłuży je wszystkie - Ładuj skrypt Listonic tylko raz na stronę, nawet przy używaniu wielu przycisków
Wytyczne dotyczące struktury HTML
- Utrzymuj listy składników w czystych, semantycznych strukturach HTML (na przykład listy nieuporządkowane z elementami listy), aby widget mógł je niezawodnie parsować
- Używaj spójnych nazw klas na wszystkich stronach z przepisami
- Unikaj zagnieżdżania elementów interaktywnych wewnątrz elementów listy
Dostępność
- Przycisk jest renderowany jako natywny element HTML, dostępny dla czytników ekranu
- Zapewnij wystarczający kontrast kolorów przy dostosowywaniu kolorów
- Przycisk jest domyślnie nawigowalny za pomocą klawiatury
Treść dynamiczna
- Jeśli wstawiasz treść dynamicznie (przez AJAX lub framework frontendowy), użyj
ListonicButton.initButton(el), aby zainicjalizować nowe elementy przycisków po dodaniu ich do DOM - Używając wielu przycisków, każdy element
<div class="listonic-button">jest niezależny — nie wymaga specjalnej konfiguracji - Testuj swoją integrację zarówno na urządzeniach desktopowych, jak i mobilnych, aby zapewnić płynne doświadczenie użytkownika
Dokumentacja API#
API przycisku niestandardowego
| Atrybut / API | Typ | Wymagany | Opis |
|---|---|---|---|
data-items |
string | Tak | Lista produktów oddzielonych przecinkami |
data-name |
string | Nie | Domyślna nazwa listy |
data-style |
JSON string | Nie | Obiekt JSON z właściwościami stylizacji |
ListonicButton.init() |
function | Nie | Ponowna inicjalizacja wszystkich przycisków na stronie |
ListonicButton.initButton(el) |
function | Nie | Inicjalizacja pojedynczego elementu przycisku |
API przycisku automatycznego
| Właściwość | Typ | Wymagany | Opis |
|---|---|---|---|
listonic_auto.entryClass |
string | Tak | Klasa CSS kontenera składników |
listonic_auto.minCount |
number | Nie | Minimalna liczba produktów do wyświetlenia przycisku |
listonic_auto.hideSideBar |
boolean | Nie | Ukryj pasek boczny dla trybu zwartego |
listonic_auto.style |
object | Nie | Obiekt stylizacji stosowany do automatycznie generowanych przycisków |
URL skryptów
| Typ widgetu | URL |
|---|---|
| Przycisk niestandardowy | widget/listonic-button.js |
| Przycisk automatyczny | widget/listonic-auto.js |
Najczęściej zadawane pytania#
Pytania dotyczące instalacji
Czy mogę używać widgetu na każdej stronie?
Tak! Widget działa na praktycznie każdej stronie internetowej lub aplikacji webowej, włącznie z WordPress, Shopify, niestandardowymi stronami HTML i nowoczesnymi frameworkami JavaScript. Dopóki możesz wstawić JavaScript na stronę, możesz używać przycisku Dodaj do listy Listonic.
Czy potrzebuję klucza API?
Nie, widget Listonic jest darmowy i nie wymaga żadnego klucza API ani rejestracji.
Czy jest limit liczby przycisków, które mogę dodać?
Nie, możesz dodać tyle przycisków, ile potrzebujesz. Po prostu użyj oddzielnych elementów <div class="listonic-button"> — skrypt automatycznie zainicjalizuje je wszystkie.
Pytania dotyczące dostosowania
Czy mogę dostosować wygląd przycisku?
Tak, możesz dostosować kolory i inne style za pomocą atrybutu data-style. Zobacz sekcję Stylizacja dla wszystkich dostępnych właściwości. Możesz także użyć Generatora widgetu jako edytora wizualnego.
Czy mogę zmienić tekst przycisku?
Tak, użyj właściwości buttonText w atrybucie data-style, aby ustawić dowolną etykietę, na przykład: data-style='{"buttonText":"Dodaj do listy zakupów"}'.
Pytania techniczne
Czy widget jest przyjazny dla urządzeń mobilnych?
Tak, widget jest w pełni responsywny i działa bezproblemowo na urządzeniach mobilnych. Łączy się bezpośrednio z aplikacją Listonic, która jest używana przez ponad 20 milionów użytkowników na całym świecie.
Czy widget wpływa na szybkość ładowania strony?
Widget jest lekki. Skrypt używa atrybutu defer, więc ładuje się bez blokowania początkowego renderowania strony.
Co się dzieje, gdy użytkownik kliknie przycisk?
Przycisk otwiera interfejs Listonic, gdzie użytkownicy mogą dodać produkty do swojej listy zakupów. Jeśli mają aplikację Listonic, produkty synchronizują się automatycznie na wszystkich ich urządzeniach.
Przykłady działania#
Blogi i strony z przepisami
Strony z przepisami i blogerzy kulinarni używają naszych przycisków, aby pomóc czytelnikom natychmiast zapisywać składniki do list zakupów.
Automatyczne pobieranie składników, zapisywanie przepisu jednym kliknięciem, idealne do planowania posiłków.
Zobacz demo →Przewodniki i blogi turystyczne
Serwisy podróżnicze ułatwiają planowanie wyjazdów, pozwalając czytelnikom zapisywać listy pakowania, lokalne produkty oraz niezbędne rzeczy na każdą wyprawę.
Listy rzeczy do spakowania, przewodniki po lokalnych targach, przypomnienia o niezbędnych rzeczach w podróży.
Zobacz demo →Blogi fitness i strony o zdrowiu
Serwisy fitness pomagają czytelnikom w przygotowaniach, umożliwiając zapisywanie składników do meal prepu, list suplementów oraz poradników zakupowych dotyczących zdrowego odżywiania.
Listy zakupów do meal prep, składniki planu żywieniowego, rekomendacje suplementów.
Zobacz demo →Zasoby dla nauczycieli i strony edukacyjne
Platformy edukacyjne pomagają nauczycielom udostępniać rodzicom listy przyborów szkolnych, materiałów do projektów i zasobów dla uczniów.
Listy przyborów szkolnych, listy materiałów do projektów, udostępnianie rodzic-nauczyciel.
Zobacz demo →Użyj naszego interaktywnego generatora widgetu, aby utworzyć niestandardowo wystylizowane przyciski z podglądem na żywo i gotowym do skopiowania kodem.