Modul Magento 2 — SEO Rich Data (JSON-LD)
Ce este SEO Rich Data?
Modulul SEO Rich Data pentru Magento 2 adaugă magazinului tău date structurate complete, conforme cu standardul schema.org, în format JSON-LD, acceptat de Google. Astfel, produsele, categoriile, filele și conținutul tău pot fi afișate în motorul de căutare sub formă de rezultate îmbogățite (rich snippets), ceea ce influențează direct vizibilitatea, CTR-ul și SEO.
Cele mai importante caracteristici ale modulului:
Tipuri de date acceptate:
Product
Descriere detaliată a produsului: nume, descriere, preț, monedă, stoc disponibil, producător, marcă, SKU, MPN.
Offer
Informații despre disponibilitatea și condițiile ofertei (noutate, disponibilitate, data de valabilitate a prețului).
Brand / Manufacturer
Marcarea automată a mărcii și producătorului pe baza datelor produsului.
Organization
Datele companiei tale (numele vânzătorului, contact, site web).
BreadcrumbList
Breadcrumbs de navigare care ajută Google să înțeleagă mai bine structura paginii.
SearchAction (WebSite)
Indicație pentru Google despre modul în care funcționează motorul intern de căutare al magazinului.
ItemList (pentru paginile de categorie)
Listă de produse din categorie (nume, imagine, link) — accelerează indexarea și oferă context pentru Google.
Recenzii (Review + AggregateRating)
Generarea automată a datelor structurate pe baza opiniilor clienților: evaluări (rating), numărul de opinii, conținutul recenziei și datele autorului. Modulul creează atât intrări individuale Review, cât și un rezumat agregat AggregateRating, ceea ce permite afișarea stelelor în rezultatele Google (rich snippets) și crește semnificativ CTR-ul.
VideoObject (NOUTATE)
Detectează videoclipurile din galeria produsului și le adaugă ca date structurate (miniatură, link, dată).
FAQPage (CONECTARE CU MODULUL „Zapytaj o produkt”)
Dacă ai instalat modulul nostru Zapytaj o produkt, toate întrebările cu răspunsuri pentru produsul respectiv sunt convertite automat în date FAQPage. Acest lucru permite Google să afișeze secțiunea cu întrebări și răspunsuri direct în rezultatele căutării!
Integrare cu modulul Zapytaj o produkt
Dacă folosești al doilea nostru modul — „Zapytaj o produkt”, datele structurate FAQ sunt generate dinamic pe baza întrebărilor și răspunsurilor reale, oferite de vânzător. Acest lucru crește autenticitatea datelor și valoarea SEO.
În plus, întrebările și răspunsurile pot fi vizibile ca filă pe pagina produsului — cu posibilitatea de activare și de setare a titlului din configurare.
De ce merită să folosești Rich Data în Magento?
Vizibilitate mai mare în rezultatele Google – produsele tale vor apărea cu preț, disponibilitate, opinii și alte informații.
CTR mai bun – utilizatorii dau clic mai des pe rezultatele îmbogățite.
Indexare mai eficientă – Google înțelege mai bine structura paginii și indexează mai rapid noutățile.
Calitate a conținutului fără concurență – îi arăți Google date care anterior erau ascunse doar în HTML.
Configurare
Posibilitatea de activare/dezactivare a componentelor individuale (de exemplu FAQ, VideoObject).
Titlu personalizat pentru fila cu întrebări (pentru modulul „Zapytaj o produkt”).
Mecanism de detectare și generare automată a datelor JSON-LD.
Cerințe
Magento 2.4.x (testat pe 2.4.7)
PHP 8.1+
Recomandat: modulul Zapytaj o produkt pentru funcționalități complete (FAQ)
Ce primești:
Modul gata de instalare prin Composer
Documentație completă
Cod conform cu recomandările Magento
Suport tehnic la implementare
Vrei să îți evidențiezi magazinul în Google? Acest modul este SEO-ul tău în versiune PRO. Comandă acum și crește-ți vizibilitatea!
SEO Rich Data - instalacja i konfiguracja
Cel modułu
Moduł Kowal_SeoRichData dodaje do Magento 2 dane strukturalne schema.org w formacie JSON-LD. Generowane dane mogą obejmować produkty, oferty, ceny, dostępność, oceny, recenzje, breadcrumbs, dane organizacji, nazwę strony, search box, profile społecznościowe, FAQ oraz wideo.
Konfiguracja modułu znajduje się w panelu administracyjnym Magento:
Stores > Configuration > Kowal > SEO Rich Data
Wymagania
- Magento 2.
- Dostęp do CLI Magento.
- Dostęp do Composer repository z pakietem
kowal/module-seo-rich-data. - Wymagany pakiet bazowy:
kowal/base. - Uprawnienia do uruchamiania komend
bin/magento.
Instalacja przez Composer
- Dodaj repozytorium pakietu:
composer config repositories.seo.rich.data vcs https://github.com/kowalco/magento-2-seo-rich-data
- Jeśli repozytorium jest prywatne, dodaj token dostępu GitHub:
composer config --global --auth github-oauth.github.com <YOUR_TOKEN>
- Zainstaluj moduł:
composer require kowal/module-seo-rich-data
- Włącz moduł:
php bin/magento module:enable Kowal_SeoRichData
- Uruchom aktualizację Magento:
php bin/magento setup:upgrade
- W środowisku produkcyjnym wykonaj kompilację DI:
php bin/magento setup:di:compile
- W środowisku produkcyjnym, jeśli projekt tego wymaga, wygeneruj statyczne pliki:
php bin/magento setup:static-content:deploy
- Wyczyść cache:
php bin/magento cache:flush
Instalacja ręczna
- Skopiuj moduł do katalogu:
app/code/Kowal/SeoRichData
- Włącz moduł:
php bin/magento module:enable Kowal_SeoRichData
- Uruchom aktualizację Magento:
php bin/magento setup:upgrade
- Wyczyść cache:
php bin/magento cache:flush
Czynności po instalacji
Po instalacji moduł dodaje atrybut produktu:
| Atrybut | Znaczenie |
|---|---|
offer_item_condition |
Stan produktu używany do wygenerowania itemCondition w offers. |
Atrybut obsługuje wartości:
| Wartość w Magento | Wartość JSON-LD |
|---|---|
DamagedCondition |
https://schema.org/DamagedCondition |
NewCondition |
https://schema.org/NewCondition |
RefurbishedCondition |
https://schema.org/RefurbishedCondition |
UsedCondition |
https://schema.org/UsedCondition |
Jeśli produkt nie ma ustawionej wartości atrybutu, moduł traktuje go jako NewCondition.
Zakres konfiguracji
Wszystkie pola konfiguracyjne są dostępne dla zakresów Default, Website i Store View, zgodnie z ustawieniami Magento.
Pola typu Enabled, Show ... i podobne używają standardowych wartości Magento:
| Wartość | Znaczenie |
|---|---|
Yes |
Funkcja jest włączona i może generować dane JSON-LD. |
No |
Funkcja jest wyłączona. |
Breadcrumbs
Sekcja odpowiada za dane strukturalne ścieżki nawigacji.
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie danych BreadcrumbList. |
Yes, No |
Fixed Category Path |
Na stronie produktu używa najbardziej szczegółowej ścieżki kategorii, gdy Magento nie dostarcza pełnego kontekstu kategorii. | Yes, No |
Type |
Określa długość ścieżki breadcrumbs generowanej dla wyszukiwarki. | Default (Long), Short |
Wartości pola Type:
| Wartość | Znaczenie |
|---|---|
Default (Long) |
Pełna ścieżka, np. Store > Category > Subcategory > Product. |
Short |
Skrócona ścieżka, np. Store > Subcategory > Product. |
Include Your Site Name in Search Results
Sekcja odpowiada za dane typu WebSite, które mogą pomóc Google rozpoznać nazwę witryny.
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie danych WebSite. |
Yes, No |
Website Name |
Nazwa strony/sklepu przekazywana w danych strukturalnych. | Tekst, np. nazwa sklepu. |
Organization
Sekcja odpowiada za dane typu Organization.
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie danych organizacji. | Yes, No |
Organization Name |
Nazwa firmy lub sklepu. | Tekst; pole wymagane po włączeniu sekcji. |
Logo Url |
Pełny URL logo organizacji. | URL do pliku graficznego. |
Description |
Opis organizacji. | Tekst. |
Description Length |
Maksymalna liczba znaków opisu. | Liczba; puste oznacza brak skracania. |
Country |
Kraj organizacji. | Kod kraju z listy Magento. |
Region/State |
Region lub województwo. | Tekst. |
ZIP/Postal Code |
Kod pocztowy. | Tekst. |
City |
Miasto. | Tekst. |
Street Address |
Ulica i numer. | Tekst. |
Sales |
Telefon działu sprzedaży. | Numer w formacie międzynarodowym, np. +48.... |
Technical Support |
Telefon wsparcia technicznego. | Numer w formacie międzynarodowym. |
Customer Service |
Telefon obsługi klienta. | Numer w formacie międzynarodowym. |
Kraj z tej sekcji może być użyty jako fallback dla kraju wysyłki i kraju polityki zwrotów, jeśli odpowiednie pola w sekcji produktu pozostają puste.
Social Profiles
Sekcja dodaje profile społecznościowe organizacji. Aby dane miały sens, sekcja Organization powinna być włączona.
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie linków profili społecznościowych. | Yes, No |
Facebook |
URL profilu Facebook. | Pełny URL. |
Twitter |
URL profilu Twitter / X. | Pełny URL. |
Google+ |
URL profilu Google+. | Pełny URL; historyczne pole konfiguracji. |
Instagram |
URL profilu Instagram. | Pełny URL. |
YouTube |
URL kanału YouTube. | Pełny URL. |
LinkedIn |
URL profilu LinkedIn. | Pełny URL. |
Myspace |
URL profilu Myspace. | Pełny URL; historyczne pole konfiguracji. |
Pinterest |
URL profilu Pinterest. | Pełny URL. |
SoundCloud |
URL profilu SoundCloud. | Pełny URL. |
Tumblr |
URL profilu Tumblr. | Pełny URL. |
Puste pola są pomijane.
Search Box
Sekcja odpowiada za dane SearchAction, które mogą umożliwić wyświetlanie pola wyszukiwania sklepu w wynikach Google.
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie danych wyszukiwarki witryny. | Yes, No |
Category Rich Data
Sekcja odpowiada za generowanie danych produktów na stronach kategorii.
| Pole | Znaczenie | Wartości |
|---|---|---|
Show Products Data |
Dodaje dane strukturalne dla produktów widocznych na stronie kategorii. | Yes, No |
Włączenie tej opcji może pogorszyć wydajność stron kategorii, ponieważ moduł musi zebrać dane dla wielu produktów.
Product Rich Data
Sekcja odpowiada za główne dane produktu typu Product oraz za dane offers.
Podstawowe pola produktu
| Pole | Znaczenie | Wartości |
|---|---|---|
Enabled |
Włącza generowanie JSON-LD produktu na stronie produktu. | Yes, No |
Show Availability |
Dodaje availability w offers. |
Yes, No |
priceValidUntil Default Value |
Domyślna data ważności ceny. | Data. |
Use “Special Price To” Value for priceValidUntil Snippet |
Jeśli produkt ma aktywną cenę specjalną i datę Special Price To, ta data zastępuje wartość domyślną. |
Yes, No |
Show Condition |
Dodaje itemCondition w offers. |
Yes, No |
Description |
Określa źródło opisu produktu w JSON-LD. | None, Product Short Description, Product Full Description, Page Meta Description |
Wartości pola Description:
| Wartość | Znaczenie |
|---|---|
None |
Nie pobiera opisu z konfiguracji; kod może użyć nazwy produktu jako fallback, jeśli opis jest pusty. |
Product Short Description |
Używa krótkiego opisu produktu. |
Product Full Description |
Używa pełnego opisu produktu. |
Page Meta Description |
Używa meta description strony. |
Produkty konfigurowalne i grupowane
| Pole | Znaczenie | Wartości |
|---|---|---|
Show Configurable Products as |
Określa sposób generowania ofert dla produktów konfigurowalnych. | Main Offer, List of Associated Products Offers, Aggregate Offer |
Show Grouped Products as |
Określa sposób generowania ofert dla produktów grupowanych. | Main Offer, List of Associated Products Offers, Aggregate Offer |
Wartości:
| Wartość | Znaczenie |
|---|---|
Main Offer |
Generuje jedną ofertę dla produktu głównego. |
List of Associated Products Offers |
Generuje osobną ofertę dla każdego produktu prostego lub powiązanego. |
Aggregate Offer |
Generuje AggregateOffer z najniższą ceną, najwyższą ceną i liczbą ofert. |
Oceny i recenzje
| Pole | Znaczenie | Wartości |
|---|---|---|
Show Rating |
Dodaje aggregateRating i review do danych produktu. |
Yes, No |
Use Yotpo Reviews instead of Magento Reviews |
Pobiera recenzje z Yotpo zamiast Magento Reviews. | Yes, No |
Rating Format |
Określa skalę ocen. | Percentage Scale, Numeric Scale |
Number of Reviews |
Limit liczby najnowszych recenzji dodawanych do JSON-LD. | Liczba; puste oznacza wszystkie recenzje. |
Wartości pola Rating Format:
| Wartość | Znaczenie |
|---|---|
Percentage Scale |
Oceny są interpretowane w skali procentowej. |
Numeric Scale |
Oceny są interpretowane w skali liczbowej. |
Integracja z Yotpo wymaga dostępności modułu obsługującego Yotpo. Jeśli moduł nie jest zainstalowany, konfiguracja Yotpo nie powinna być włączana.
Brand, manufacturer i identyfikatory produktu
| Pole | Znaczenie | Wartości |
|---|---|---|
Brand |
Atrybut produktu używany do wygenerowania właściwości brand. |
Dowolny atrybut produktu z listy. |
EAN / GTIN Attribute |
Atrybut produktu używany jako globalny identyfikator produktu. | Dowolny atrybut produktu z listy. |
Manufacturer |
Atrybut produktu używany do wygenerowania właściwości manufacturer. |
Dowolny atrybut produktu z listy. |
Pole EAN / GTIN Attribute generuje właściwość zależnie od liczby cyfr:
| Liczba cyfr | Właściwość JSON-LD |
|---|---|
| 8 | gtin8 |
| 12 | gtin12 |
| 13 | gtin13 |
| 14 | gtin14 |
| Inna dodatnia liczba cyfr | gtin |
Moduł usuwa znaki inne niż cyfry z wartości EAN / GTIN przed wygenerowaniem JSON-LD.
Shipping details
Sekcja wysyłki odpowiada za wygenerowanie shippingDetails w offers. Dane są dodawane tylko wtedy, gdy sekcja jest włączona i ma komplet wymaganych wartości.
| Pole | Znaczenie | Wartości |
|---|---|---|
Show Shipping Details |
Włącza generowanie shippingDetails. |
Yes, No |
Shipping Country |
Kraj dostawy. | Kod kraju z listy Magento; jeśli puste, używany jest kraj z sekcji Organization. |
Shipping Price |
Koszt dostawy. | Liczba równa lub większa od 0; 0 oznacza darmową dostawę. |
Handling Time Min Days |
Minimalny czas obsługi zamówienia. | Liczba całkowita, dni. |
Handling Time Max Days |
Maksymalny czas obsługi zamówienia. | Liczba całkowita, dni. |
Transit Time Min Days |
Minimalny czas transportu. | Liczba całkowita, dni. |
Transit Time Max Days |
Maksymalny czas transportu. | Liczba całkowita, dni. |
Waluta kosztu wysyłki jest pobierana z waluty oferty produktu.
Przykład znaczenia wartości:
| Pole | Przykład | Znaczenie |
|---|---|---|
Shipping Price |
0 |
Darmowa wysyłka. |
Handling Time Min Days |
0 |
Zamówienie może zostać obsłużone tego samego dnia. |
Handling Time Max Days |
1 |
Obsługa zamówienia trwa maksymalnie 1 dzień. |
Transit Time Min Days |
1 |
Dostawa trwa co najmniej 1 dzień. |
Transit Time Max Days |
5 |
Dostawa trwa maksymalnie 5 dni. |
Merchant return policy
Sekcja polityki zwrotów odpowiada za wygenerowanie hasMerchantReturnPolicy w offers. Dane są dodawane tylko wtedy, gdy sekcja jest włączona i ma wymagane wartości.
| Pole | Znaczenie | Wartości |
|---|---|---|
Show Merchant Return Policy |
Włącza generowanie hasMerchantReturnPolicy. |
Yes, No |
Return Policy Country |
Kraj obowiązywania polityki zwrotów. | Kod kraju z listy Magento; jeśli puste, używany jest kraj z sekcji Organization. |
Return Policy Category |
Typ polityki zwrotu. | Finite Return Window, Returns Not Permitted, Unlimited Return Window |
Merchant Return Days |
Liczba dni na zwrot. | Liczba całkowita; wymagana dla Finite Return Window. |
Return Method |
Obsługiwana metoda zwrotu. | -- Empty --, Return By Mail, Return In Store, Return At Kiosk |
Return Fees |
Informacja o opłatach za zwrot. | -- Empty --, Free Return, Customer Responsibility, Return Shipping Fees |
Return Shipping Fee |
Kwota opłaty za przesyłkę zwrotną. | Liczba większa od 0; wymagana tylko dla Return Shipping Fees. |
Wartości pola Return Policy Category:
| Wartość | Wartość JSON-LD | Znaczenie |
|---|---|---|
Finite Return Window |
https://schema.org/MerchantReturnFiniteReturnWindow |
Zwrot możliwy przez określoną liczbę dni. Wymaga Merchant Return Days. |
Returns Not Permitted |
https://schema.org/MerchantReturnNotPermitted |
Zwroty nie są dozwolone. |
Unlimited Return Window |
https://schema.org/MerchantReturnUnlimitedWindow |
Zwrot bez określonego limitu dni. |
Wartości pola Return Method:
| Wartość | Wartość JSON-LD | Znaczenie |
|---|---|---|
-- Empty -- |
brak wartości | Metoda zwrotu nie jest dodawana do JSON-LD. |
Return By Mail |
https://schema.org/ReturnByMail |
Zwrot wysyłkowy. |
Return In Store |
https://schema.org/ReturnInStore |
Zwrot w sklepie stacjonarnym. |
Return At Kiosk |
https://schema.org/ReturnAtKiosk |
Zwrot w punkcie/kiosku. |
Wartości pola Return Fees:
| Wartość | Wartość JSON-LD | Znaczenie |
|---|---|---|
-- Empty -- |
brak wartości | Informacja o opłatach nie jest dodawana do JSON-LD. |
Free Return |
https://schema.org/FreeReturn |
Zwrot jest darmowy. |
Customer Responsibility |
https://schema.org/ReturnFeesCustomerResponsibility |
Koszt zwrotu ponosi klient. |
Return Shipping Fees |
https://schema.org/ReturnShippingFees |
Zwrot ma określoną opłatę za wysyłkę zwrotną. Wymaga Return Shipping Fee. |
Waluta pola Return Shipping Fee jest pobierana z waluty oferty produktu.
Custom Properties
Pole Custom Properties pozwala dodać własne właściwości do JSON-LD produktu.
Format:
wlasciwosc_jsonld,kod_atrybutu
Jeśli podany jest tylko jeden element, moduł traktuje go jednocześnie jako nazwę właściwości JSON-LD i kod atrybutu.
Domyślna wartość:
sku
mpn,sku
Znaczenie domyślnej wartości:
| Linia | Efekt |
|---|---|
sku |
Dodaje sku na podstawie atrybutu sku. |
mpn,sku |
Dodaje mpn na podstawie atrybutu sku. |
Przykład dodania własnego atrybutu:
color,color
material,material
Zalecana konfiguracja minimalna dla produktów
Aby ograniczyć ostrzeżenia Google Search Console dla danych produktowych, skonfiguruj co najmniej:
| Pole | Zalecenie |
|---|---|
Product Rich Data > Enabled |
Yes |
Show Availability |
Yes |
Brand |
Wybierz atrybut z marką produktu. |
EAN / GTIN Attribute |
Wybierz atrybut z EAN / GTIN, jeśli produkty mają globalny identyfikator. |
Show Shipping Details |
Yes, jeśli sklep ma jednolitą politykę wysyłki możliwą do opisania w konfiguracji. |
Show Merchant Return Policy |
Yes, jeśli sklep ma jednolitą politykę zwrotów możliwą do opisania w konfiguracji. |
Custom Properties |
Utrzymaj co najmniej sku; opcjonalnie dodaj mpn, jeśli sklep posiada taki identyfikator. |
Czyszczenie cache po zmianach konfiguracji
Po zmianie konfiguracji wykonaj:
php bin/magento cache:flush
Jeśli sklep używa dodatkowego cache HTTP, Varnish lub CDN, wyczyść również te warstwy cache.
Weryfikacja działania
- Otwórz stronę produktu na frontendzie.
- Sprawdź źródło strony i znajdź:
<script type="application/ld+json">
- Zweryfikuj, czy JSON-LD zawiera oczekiwane pola, np.:
{
"@type": "Product",
"brand": {
"@type": "Brand",
"name": "Example Brand"
},
"gtin13": "5901234123457",
"offers": [
{
"@type": "Offer",
"shippingDetails": {},
"hasMerchantReturnPolicy": {}
}
]
}
- Przetestuj adres URL produktu w narzędziu Google Rich Results Test lub w Google Search Console.
Uwagi wdrożeniowe
- Nie włączaj
shippingDetailsanihasMerchantReturnPolicy, jeśli wartości w konfiguracji nie odpowiadają rzeczywistej polityce sklepu. - Jeśli polityki wysyłki lub zwrotów różnią się per produkt, region, metoda dostawy albo koszyk, jedna globalna konfiguracja może nie być wystarczająca.
- Po zmianie atrybutów
Brand,ManufacturerlubEAN / GTIN Attributewarto przeindeksować dane produktu, jeśli sklep używa cache lub indeksów wpływających na odczyt atrybutów. - W sklepach wielojęzycznych i wielowalutowych sprawdź konfigurację osobno dla każdego Store View.
Wersja: 1.0.17
19.05.2026
Added
- Dodano obsługę pola
shippingDetailsw strukturzeoffersdla danych produktu JSON-LD. - Dodano obsługę pola
hasMerchantReturnPolicyw strukturzeoffersdla danych produktu JSON-LD. - Dodano konfigurację danych wysyłki:
- włączanie/wyłączanie generowania
shippingDetails, - kraj wysyłki,
- koszt wysyłki,
- minimalny i maksymalny czas obsługi zamówienia,
- minimalny i maksymalny czas transportu.
- włączanie/wyłączanie generowania
- Dodano konfigurację polityki zwrotów:
- włączanie/wyłączanie generowania
hasMerchantReturnPolicy, - kraj obowiązywania polityki,
- typ polityki zwrotu,
- liczba dni na zwrot,
- metoda zwrotu,
- opłaty za zwrot,
- opcjonalna kwota opłaty za przesyłkę zwrotną.
- włączanie/wyłączanie generowania
- Dodano wybór atrybutu EAN / GTIN w konfiguracji produktu.
- Dodano automatyczne mapowanie wartości EAN / GTIN na właściwości
gtin8,gtin12,gtin13,gtin14albogtin, zależnie od długości numeru. - Dodano source modele dla opcji konfiguracji polityki zwrotów:
ReturnPolicyCategory,ReturnMethod,ReturnFees.
Changed
- Usprawniono pobieranie wartości atrybutów
brandimanufacturerdo JSON-LD. - Dodano fallback pobierania wartości atrybutów z raw EAV value, gdy
getAttributeText()albogetData()nie zwraca wartości. - Dla produktów konfigurowalnych i grupowanych dodano fallback pobierania wartości brand / GTIN z produktów prostych.
- Przepięto przestarzałą metodę
Block\Product::getResultArray()na wspólną logikęModel\JsonLd\ProductInfo, żeby generowanie danych produktu było spójne na stronie produktu i w listach kategorii. - Rozszerzono klucz cache ofert o konfigurację wysyłki i polityki zwrotów, aby zmiany konfiguracji wpływały na wygenerowany JSON-LD.
Fixed
- Naprawiono przypadek, w którym skonfigurowany atrybut
Brandnie pojawiał się w JSON-LD produktu. - Uzupełniono brakujące dane wymagane przez Google Search Console dla merchant listing:
shippingDetails,hasMerchantReturnPolicy,- globalny identyfikator produktu przez EAN / GTIN.




















