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.
listonic_content
<!-- Przycisk Dodaj do listy Listonic -->
<script type="text/javascript">
listonic_content = 'Mleko<br/>Jajka<br/>Chleb';
listonic_name = 'Moja lista zakupów';
document.write("<iframe class='listonic_ifrm' frameborder='0' scrolling='no'></iframe>");
</script>
<script src="https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/button.js"></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 używając tagów <br/>. HTML jest obsługiwany, włącznie z linkami używającymi tagów <a>.
Domyślna nazwa listy zakupów. Jeśli nie podano, użytkownik może wybrać lub utworzyć listę w interfejsie Listonic.
Ustaw na 'true', aby użyć alternatywnego tekstu przycisku "Dodaj do listy zakupów" zamiast domyślnego brandingu Listonic.
Parametry przycisku automatycznego#
Tryb widgetu. Użyj "generic" dla automatycznego wyodrębniania składników z elementów HTML.
Nazwa klasy CSS elementu HTML zawierającego listę składników. Widget przeskanuje ten element w poszukiwaniu elementów listy.
Ustaw na true, aby ukryć pasek boczny i użyć bardziej zwartego trybu wyświetlania. Domyślnie false.
Stylizacja przycisku#
Domyślnie przycisk Listonic używa standardowej stylizacji. Jeśli chcesz lepiej dopasować go do wyglądu swojej strony, możesz nadpisać wybrane kolory wewnątrz osadzonego iframe.
Własne kolory#
Poniższy fragment kodu aktualizuje wszystkie iframe przycisków Listonic na stronie o niestandardowe kolory:
<script type="text/javascript">
setTimeout(function () {
var iconColor = '#54AB26'; // Kolor wypełnienia ikony
var iconBackground = '#eeeeee'; // Tło ikony
var textBackground = '#eeeeee'; // Tło przycisku
var textColor = '#747474'; // Kolor tekstu
var frames = document.getElementsByClassName("listonic_ifrm_used");
for (var i = 0; i < frames.length; i++) {
var cssStyle = document.createElement("style");
var css =
'.listonic-button { background-color: ' + textBackground + ';}' +
'.listonic-button-icon svg {fill: ' + iconColor + ';}' +
'.listonic-button-icon { background-color: ' + iconBackground + ';}' +
'.listonic-button-text svg {fill: ' + textColor + ';}';
cssStyle.type = 'text/css';
cssStyle.appendChild(document.createTextNode(css));
frames[i].contentDocument.head.appendChild(cssStyle);
}
}, 0);
</script>
Dostępne klasy CSS
| Klasa | Opis |
|---|---|
.listonic-button |
Główny kontener przycisku |
.listonic-button-icon |
Element opakowujący ikonę |
.listonic-button-icon svg |
Element SVG ikony |
.listonic-button-text |
Opakowanie tekstu przycisku |
Treść dynamiczna (AJAX/SPA)#
Jeśli wstawiasz treść dynamicznie (na przykład przez AJAX lub framework frontendowy), upewnij się, że skrypty Listonic uruchamiają się po pojawieniu się treści w DOM.
// Śledź ładowanie skryptu i instancje przycisków
var listonicScriptLoaded = false;
var listonicButtonIndex = 0;
// Po załadowaniu treści przez AJAX
function initListonicButton(items, listName, containerId) {
var container = document.getElementById(containerId);
var buttonId = listonicButtonIndex++;
// Użyj indeksowanych zmiennych, aby obsługiwać wiele przycisków
window['listonic_content_' + buttonId] = items.join('<br/>');
window['listonic_name_' + buttonId] = listName;
// Utwórz iframe z unikalnym ID
var iframe = document.createElement('iframe');
iframe.className = 'listonic_ifrm';
iframe.id = 'listonic_ifrm_' + buttonId;
iframe.frameBorder = '0';
iframe.scrolling = 'no';
container.appendChild(iframe);
// Załaduj skrypt tylko raz
if (!listonicScriptLoaded) {
var script = document.createElement('script');
script.src = 'https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/button.js';
script.onload = function() { listonicScriptLoaded = true; };
document.body.appendChild(script);
}
}
Zawsze używaj indeksowanych zmiennych (listonic_content_0, listonic_content_1 itp.) podczas dynamicznego tworzenia przycisków. Ładuj skrypt tylko raz i używaj unikalnych ID iframe, aby uniknąć konfliktów.
Integracja z frameworkami#
Poniższe przykłady pokazują, jak zintegrować przyciski Listonic z popularnymi frameworkami JavaScript. Te komponenty obsługują odpowiednie czyszczenie i unikają typowych pułapek takich jak wycieki pamięci.
Używając frameworków: (1) Ładuj skrypt tylko raz, (2) Używaj unikalnych indeksowanych zmiennych dla każdej instancji przycisku, (3) Czyszczenie iframe'ów i zmiennych globalnych podczas odmontowania komponentów.
React
import React, { useEffect, useRef } from 'react';
// Śledź ładowanie skryptu (współdzielone między wszystkimi instancjami)
let scriptLoaded = false;
const ListonicButton = ({ items, listName }) => {
const containerRef = useRef(null);
const iframeRef = useRef(null);
const idRef = useRef('listonic_' + Date.now());
useEffect(() => {
const id = idRef.current;
const container = containerRef.current;
if (!container) return;
// Wyczyść poprzednią zawartość
container.innerHTML = '';
// Użyj indeksowanych zmiennych dla unikalnej identyfikacji
window['listonic_content_' + id] = items.join('<br/>');
window['listonic_name_' + id] = listName;
// Utwórz iframe z unikalnym ID
const iframe = document.createElement('iframe');
iframe.className = 'listonic_ifrm';
iframe.id = 'listonic_ifrm_' + id;
iframe.frameBorder = '0';
iframe.scrolling = 'no';
container.appendChild(iframe);
iframeRef.current = iframe;
// Załaduj skrypt tylko raz
if (!scriptLoaded) {
const script = document.createElement('script');
script.src = 'https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/button.js';
script.onload = () => { scriptLoaded = true; };
document.body.appendChild(script);
}
// Czyszczenie przy odmontowaniu lub zmianie właściwości
return () => {
if (iframeRef.current && iframeRef.current.parentNode) {
iframeRef.current.parentNode.removeChild(iframeRef.current);
}
delete window['listonic_content_' + id];
delete window['listonic_name_' + id];
};
}, [items, listName]);
return <div ref={containerRef} />;
};
export default ListonicButton;
Vue.js
<template>
<div ref="container"></div>
</template>
<script>
// Śledź ładowanie skryptu (współdzielone między wszystkimi instancjami)
let scriptLoaded = false;
export default {
props: {
items: { type: Array, required: true },
listName: { type: String, default: 'Lista zakupów' }
},
data() {
return {
instanceId: 'listonic_' + Date.now(),
iframe: null
};
},
mounted() {
this.initButton();
},
beforeUnmount() {
this.cleanup();
},
methods: {
initButton() {
const id = this.instanceId;
// Użyj indeksowanych zmiennych dla unikalnej identyfikacji
window['listonic_content_' + id] = this.items.join('<br/>');
window['listonic_name_' + id] = this.listName;
// Utwórz iframe z unikalnym ID
this.iframe = document.createElement('iframe');
this.iframe.className = 'listonic_ifrm';
this.iframe.id = 'listonic_ifrm_' + id;
this.iframe.frameBorder = '0';
this.iframe.scrolling = 'no';
this.$refs.container.appendChild(this.iframe);
// Załaduj skrypt tylko raz
if (!scriptLoaded) {
const script = document.createElement('script');
script.src = 'https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/button.js';
script.onload = () => { scriptLoaded = true; };
document.body.appendChild(script);
}
},
cleanup() {
if (this.iframe && this.iframe.parentNode) {
this.iframe.parentNode.removeChild(this.iframe);
}
delete window['listonic_content_' + this.instanceId];
delete window['listonic_name_' + this.instanceId];
}
}
}
</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 iframe ma klasę
listonic_ifrm - Zweryfikuj, że nie ma błędów JavaScript w konsoli
- Upewnij się, że
listonic_contentjest zdefiniowany przed załadowaniem skryptu
Produkty nie są dodawane
- Sprawdź, czy produkty są rozdzielone tagami
<br/> - Upewnij się, że treść nie zawiera nieprawidłowego HTML
- Dla widgetu bloga zweryfikuj, że
listonic_bw_generic_entryClasspasuje do Twojego HTML
Wiele przycisków powoduje konflikty
- Używaj indeksowanych zmiennych (
_0,_1itp.) - Upewnij się, że każdy iframe ma unikalne ID
Kompatybilność przeglądarek
Widget Listonic obsługuje wszystkie nowoczesne przeglądarki:
- Chrome (desktop i mobile)
- Firefox
- Safari (desktop i iOS)
- Edge
Widget używa standardowego JavaScript i funkcjonalności iframe 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ź iframe, aby upewnić się, że załadował się poprawnie
- Zweryfikuj zmienne globalne: wpisz
listonic_contentw konsoli - Sprawdź zakładkę Network, aby upewnić się, że skrypt się załadował (status 200)
Dobre praktyki#
Wydajność i umiejscowienie skryptów
- Umieszczaj skrypty blisko końca dokumentu (przed
</body>), aby nie blokowały początkowego renderowania strony - Dla stron z wieloma przyciskami używaj indeksowanych zmiennych, aby uniknąć konfliktów
- Ł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ść
- Zawartość iframe jest dostępna 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), upewnij się, że skrypty Listonic uruchamiają się po pojawieniu się treści w DOM
- Używając wielu widgetów lub przycisków, upewnij się, że każdy kontener treści ma unikalną klasę lub identyfikator, aby uniknąć niejednoznaczności
- 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
| Zmienna | Typ | Wymagany | Opis |
|---|---|---|---|
listonic_content |
string | Tak | Produkty oddzielone <br/> |
listonic_name |
string | Nie | Domyślna nazwa listy |
listonic_alternateText |
string | Nie | Ustaw na 'true' dla alternatywnego tekstu przycisku |
listonic_content_N |
string | Nie | Indeksowana treść dla wielu przycisków |
listonic_name_N |
string | Nie | Indeksowana nazwa dla wielu przycisków |
API przycisku automatycznego
| Zmienna | Typ | Wymagany | Opis |
|---|---|---|---|
listonic_bw_type |
string | Tak | Tryb widgetu (użyj "generic") |
listonic_bw_generic_entryClass |
string | Tak | Klasa CSS kontenera składników |
listonic_hideSideBar |
boolean | Nie | Ukryj pasek boczny dla trybu zwartego |
URL skryptów
| Typ widgetu | URL |
|---|---|
| Przycisk niestandardowy | https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/button.js |
| Przycisk automatyczny | https://s3-eu-west-1.amazonaws.com/buttons.listonic.pl/v1/blogwidget.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żywaj indeksowanych zmiennych dla wielu przycisków na tej samej stronie.
Pytania dotyczące dostosowania
Czy mogę dostosować wygląd przycisku?
Tak, możesz dostosować kolory używając skryptu stylizacji dostarczonego w sekcji Stylizacja. Dla bardziej zaawansowanego dostosowania rozważ użycie Generatora widgetu.
Czy mogę zmienić tekst przycisku?
Tak, ustaw listonic_alternateText = 'true', aby użyć "Dodaj do listy zakupów" jako tekst przycisku.
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. Dla najlepszej wydajności umieść skrypt blisko końca dokumentu (przed </body>), aby nie blokował 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#
Strona z przepisami
Automatyczne wyodrębnianie składników ze stron z przepisami
Użyj przycisku automatycznego, aby automatycznie wyodrębnić składniki z istniejącej struktury HTML. Idealny dla blogów kulinarnych ze spójnym formatowaniem przepisów.
Strona e-commerce
Dodawanie zestawów produktów do list zakupów
Użyj przycisku niestandardowego z predefiniowanymi listami produktów. Świetny dla zestawów posiłków, pakietów produktów lub sekcji "często kupowane razem".
Blog kulinarny
Pozwól czytelnikom łatwo zapisywać składniki
Zwiększ zaangażowanie, pozwalając czytelnikom zapisać składniki z przepisu bezpośrednio do ich listy zakupów jednym kliknięciem.
Sklep spożywczy
Cotygodniowe promocje i oferty specjalne
Dodaj przyciski do cotygodniowych gazetek lub stron promocyjnych, aby klienci mogli szybko dodać produkty w promocji do swojej listy zakupów.
Użyj naszego interaktywnego generatora widgetu, aby utworzyć niestandardowo wystylizowane przyciski z podglądem na żywo i gotowym do skopiowania kodem.