Nejdůležitější vlastnosti a přínosy
- Oficiální API Instagramu: modul používá Instagram API with Instagram Login a oprávnění
instagram_business_basic. Nepoužívá rozhraní Instagram Legacy API ani Instagram Basic Display API, která Meta ukončila. - Žádné dotazy na Instagram při zobrazení stránky: blok vzniká z příspěvků uložených v databázi obchodu. Zobrazení stránky nespouští dotazy na Instagram a synchronizace probíhá v samostatných požadavcích.
- Fotky z domény obchodu: obrázky se ukládají do adresáře
img/pdblockinstagram/. Blok nenačítá skripty, rámce ani cookies Instagramu a při jeho zobrazení se prohlížeč zákazníka nepřipojuje k serverům Meta. - Automatické obnovování tokenu: modul obnovuje token přibližně každých 7 dní během synchronizace, takže při fungujícím CRONu nebo provozu v obchodě není nutné jej znovu generovat.
- Odolnost proti výpadkům: když je Instagram nedostupný, odmítne token nebo omezí počet dotazů, zákazníci stále vidí naposledy uložené příspěvky. Neúspěšná synchronizace nikdy neodstraní fungující feed.
- Konfigurovatelný vzhled: mřížka nebo karusel, počet sloupců pro počítač a telefon, rozestupy, čtvercové dlaždice, popis při najetí, náhled příspěvku a tlačítko „Zobrazit více“.
- Panel s diagnostikou: záhlaví s ukazateli stavu, pět záložek, náhled uložených příspěvků, kontrola serveru a protokol událostí usnadňují konfiguraci a hledání příčin problémů.
Jak modul funguje?
- Připojení účtu: na záložce Připojení vložíte token vygenerovaný v Meta for Developers. Modul jej zkontroluje, načte název účtu a hned stáhne příspěvky.
- Synchronizace na straně serveru: modul načítá profil a seznam příspěvků a fotografie stahuje pouze pro příspěvky, které v obchodě ještě nejsou. Uchovává 48 nejnovějších příspěvků účtu.
- Lokální kopie fotografií: každá fotografie je dekódována a znovu uložena jako JPEG ve dvou šířkách, 640 px a 320 px. Soubory příspěvků mimo 48 nejnovějších se odstraňují.
- Zobrazení v obchodě: stránka zobrazuje uložené příspěvky. Pokud je feed neaktuální, po načtení stránky odešle prohlížeč na pozadí jeden požadavek do obchodu, který spustí synchronizaci.
Pokud účet ještě nemá žádné uložené příspěvky, blok se nezobrazuje. Hlavní přepínač Zobrazovat feed zapíná a vypíná všechna místa zobrazení současně.
Nastavení vzhledu a obsahu bloku
| Nastavení | Možnosti | Výchozí |
|---|---|---|
| Rozložení | Mřížka nebo karusel v jednom řádku, posouvaný prstem nebo šipkami. | Mřížka |
| Počet příspěvků | Od 1 do 48. | 8 |
| Sloupce na počítači | Od 2 do 8 (obrazovky od 992 px). Na tabletech (768–991 px) modul zobrazuje stejný počet sloupců, maximálně 4. | 4 |
| Sloupce na telefonu | 1, 2 nebo 3 (obrazovky pod 768 px). | 2 |
| Rozestup mezi fotografiemi | 0, 2, 4, 8, 12, 16 nebo 24 px. | 8 px |
| Čtvercové dlaždice | Ořez fotografií do čtverce, jako v mřížce profilu na Instagramu, nebo původní poměry stran. | Zapnuto |
| Popis při najetí | Začátek popisu příspěvku (do 90 znaků) na fotografii při najetí kurzorem nebo bez popisu. Na dotykových obrazovkách se překryvná vrstva nezobrazuje. | Začátek popisu |
| Kliknutí na příspěvek | Otevření náhledu v obchodě nebo příspěvku na Instagramu v nové kartě. | Náhled v obchodě |
| Tlačítko „Zobrazit více” | Pouze v rozložení mřížky: odhalí další dávky příspěvků, celkem až čtyřikrát více než nastavený počet, maximálně 48. | Vypnuto |
| Název bloku | Samostatný pro každý jazyk, do 128 znaků. Prázdný název se nezobrazuje. | „Sledujte nás na Instagramu” |
| Odkaz na profil | Profilová fotografie, název @účtu a tlačítko „Sledovat” vedoucí na profil na Instagramu. | Zapnuto |
| Videa a reels | Zahrnutí nebo vynechání videopříspěvků a reels. | Zahrnuto |
| Pouze příspěvky obsahující | Text do 64 znaků, například hashtag. Zobrazují se pouze příspěvky, jejichž popis tento text obsahuje, bez ohledu na velikost písmen. | Prázdné (všechny příspěvky) |
Dlaždice videí a reels mají ikonu přehrávání a příspěvky s několika fotografiemi ikonu karuselu. Nastavení vzhledu se ukládá samostatně pro každý obchod, skupinu obchodů nebo všechny obchody.
Kde zobrazit fotografie z Instagramu?
- Domovská stránka: v obsahu domovské stránky (hook
displayHome). - Karta produktu: pod detaily produktu (hook
displayFooterProduct). - Nad patičkou na každé stránce: hook
displayFooterBefore. - Libovolné místo v šabloně: kód
{widget name='pdblockinstagram'}vložený do šablony. Volitelné parametrylimitalayoutumožňují nastavit jiný počet příspěvků a rozložení, například{widget name='pdblockinstagram' limit=6 layout='carousel'}. Kód ke zkopírování je na Dashboardu.
Stylopis a skript modulu se připojují pouze na stránkách, na kterých zapnuté místo zobrazení ukazuje feed; blok vložený widgetem je připojí samostatně. V šabloně Hummingbird, výchozí pro PrestaShop 9, je šířka bloku na domovské stránce a nad patičkou přizpůsobena kontejneru šablony.
Okno náhledu příspěvku v obchodě
Po kliknutí na fotografii se otevře okno se zvětšeným obrázkem, datem publikace, plným popisem příspěvku a tlačítkem Zobrazit na Instagramu. Mezi příspěvky lze přecházet šipkami v okně nebo klávesami se šipkami na klávesnici. Okno zavře tlačítko Zavřít, klávesa Esc nebo kliknutí na pozadí a fokus se vrátí na kliknutou fotografii.
Bez JavaScriptu nebo v prohlížeči bez podpory dialogových oken zůstává každá dlaždice běžným odkazem na příspěvek na Instagramu. U videí a reels náhled zobrazuje obálku a u karuselu první fotografii; video lze přehrát na Instagramu.
Synchronizace: CRON, obnovování na pozadí a tlačítko v panelu
- Frekvence: nové příspěvky se načítají každých 15 min, 30 min, 1 h, 3 h, 6 h, 12 h nebo 24 h. Výchozí je každou hodinu.
- CRON: záložka CRON a diagnostika uvádí adresu s tajným klíčem a ukázkový řádek pro crontab. Doporučuje se volat adresu každých 15–60 minut metodou GET nebo POST. Modul provádí práci pouze tehdy, když nastal čas synchronizace nebo obnovení tokenu; parametr
&force=1synchronizaci vynutí. - Obnovování na pozadí bez CRONu: když zákazník otevře stránku s neaktuálním feedem, prohlížeč odešle jeden POST požadavek do obchodu, jednu a půl sekundy po načtení stránky, nejvýše jednou za minutu v jedné kartě prohlížeče. Stránka vždy zobrazuje uložené příspěvky, takže zákazník na nic nečeká.
- Tlačítko v panelu: Synchronizovat nyní načte příspěvky okamžitě, bez ohledu na plán.
- Jen jedna synchronizace najednou: zámek v databázi MySQL zabraňuje paralelním synchronizacím stejného účtu.
- Časový limit: stahování fotografií v jednom průchodu trvá maximálně 25 sekund. Zbývající fotografie se stáhnou při dalším volání CRONu nebo obnově na pozadí, možné už přibližně po minutě.
Přístupový token obnovovaný automaticky
Token vygenerovaný v panelu Meta je platný 60 dní. Modul jej obnovuje během synchronizace přibližně každých 7 dní a dříve, když do konce platnosti zbývá méně než 14 dní. Podle dokumentace Meta probíhá automatické obnovení nejdříve 24 hodin po připojení nebo předchozím obnovení; po neúspěšném pokusu jej modul zopakuje po dni. Na Dashboardu a na záložce Připojení je k dispozici také tlačítko Obnovit token nyní a záhlaví panelu zobrazuje počet dní platnosti.
Token je uložen v databázi obchodu a používá jej výhradně server. Nikdy se nedostane do prohlížečů zákazníků, v panelu je viditelný pouze ve zkrácené podobě (první a poslední čtyři znaky) a ve zprávách a protokolu událostí je maskován.
Pokud Instagram token odmítne (vypršel, byl zrušen přístup aplikace, bylo změněno heslo k účtu nebo po dobu 60 dní neproběhla žádná synchronizace), modul přestane odesílat dotazy, zobrazí zprávu v panelu a nadále zobrazuje uložené příspěvky. Stačí vygenerovat nový token a vložit jej tlačítkem Zkontrolovat a nahradit token.
Fotografie ukládané na server obchodu
- Dvě velikosti: každá fotografie se ukládá jako progresivní JPEG o šířce 640 px a 320 px; menší originály se nezvětšují. Profilová fotografie má šířku 150 px.
- Bezpečné stahování: fotografie se stahují přes HTTPS výhradně ze serverů Instagramu (
cdninstagram.com,fbcdn.net), poté se dekódují a znovu ukládají přes PHP GD. Na disk se ukládají pouze pixely obrazu. Modul žádá servery Instagramu o formát JPEG; soubory PNG a WebP se převádějí, pokud je knihovna GD na serveru podporuje. - Trvanlivost: adresář
img/pdblockinstagram/leží mimo adresář modulu, takže aktualizace modulu fotografie neodstraní. - Atributy obrázků:
srcsets oběma šířkami asizespřizpůsobené počtu sloupců, rozměrywidthaheight, líné načítání a alternativní text ze začátku popisu příspěvku (do 125 znaků) nebo ve tvaru „Příspěvek @název na Instagramu”. - Emoji v popisech: popisy příspěvků se ukládají způsobem odolným vůči kódování spojení s databází, proto se emoji zobrazují správně také v PrestaShop 1.7.0–1.7.6.
Odolnost vůči chybám a omezením Instagramu
- Opakování s rostoucí prodlevou: po chybě následuje další pokus po 5 minutách a prodleva se zdvojnásobuje až do 6 hodin. Po překročení limitu dotazů modul čeká alespoň hodinu.
- Ochrana fungujícího feedu: fotografie, které se nepodařilo stáhnout, se zkusí znovu při další synchronizaci. Pokud se nepodaří uložit žádnou fotografii, předchozí feed zůstane beze změn.
- Bezpečné odkazy: adresa každého příspěvku se znovu sestavuje ve tvaru
https://www.instagram.com/p/…/(takéreelatv). Neobvyklá adresa je nahrazena odkazem na profil. - Stabilita stránky: chyba při sestavování bloku nepřeruší zobrazení stránky obchodu. Připojení k Instagramu mají časové limity, ověření certifikátu TLS a nesledují přesměrování.
Konfigurační panel
Záhlaví panelu zobrazuje stav modulu formou textu a barvy: viditelnost feedu, připojený účet, počet dní platnosti tokenu, čas poslední synchronizace, počet uložených příspěvků a poslední volání CRONu. Konfigurace je rozdělena do pěti záložek.
| Záložka | Obsah |
|---|---|
| Dashboard | První kroky (dokud účet není připojen), karta účtu (typ účtu, příspěvky uložené a dostupné na Instagramu, platnost tokenu, poslední a příští synchronizace), tlačítka synchronizace a obnovení tokenu, náhled 12 nejnovějších uložených příspěvků se zešednutím příspěvků skrytých filtry, seznam míst zobrazení a kód widgetu. |
| Připojení | Vložení a kontrola tokenu, výměna tokenu, odpojení účtu a seznam obchodů, ve kterých je účet zobrazen. |
| Vzhled | Místa zobrazení, vzhled bloku a výběr příspěvků (videa a reels, textový filtr). |
| Jak získat token | Podrobný návod krok za krokem pro Meta for Developers: požadavky, vytvoření aplikace, přidání účtu Instagram, vygenerování tokenu, informace po připojení a řešení typických problémů. |
| CRON a diagnostika | Adresa CRONu a ukázkový řádek crontabu, čas posledního volání, generování nové adresy, frekvence načítání příspěvků, kontrola serveru (cURL, GD, zapisovatelný adresář fotografií), mazání uložených příspěvků a protokol událostí. |
Protokol událostí zaznamenává připojení a odpojení účtů, synchronizace s počtem příspěvků, stažených a neúspěšných fotografií, obnovení tokenu i chyby a také zdroj události: CRON, stránku obchodu (na pozadí) nebo panel. Modul uchovává 200 posledních záznamů a protokol lze vymazat.
Multistore, jazyky a oprávnění
- Samostatný účet a nastavení: každý obchod, skupina obchodů nebo všechny obchody mohou mít vlastní účet Instagram a vlastní vzhled bloku. Obchod bez vlastních hodnot je dědí ze skupiny nebo z nastavení všech obchodů.
- Společný feed: obchody zobrazující stejný účet používají jednu sadu příspěvků, fotografií a tokenu.
- Oprávnění zaměstnanců: zaměstnanec s přístupem jen k části obchodů mění pouze to, co zobrazují jeho obchody. Nastavení společná pro všechny obchody (adresa CRONu, frekvence, protokol) vyžadují přístup ke každému obchodu a odpojení zděděného účtu v jednom obchodě jej tam pouze skryje.
- Jazyky: název bloku se nastavuje samostatně pro každý jazyk obchodu. Rozhraní modulu a texty v obchodě jsou dostupné v polštině a angličtině.
Aktualizace z verze 1.x
Verze 1.x používala Instagram Legacy API, které Meta vypnula v červnu 2020, proto od té doby nezobrazovala fotografie. Verze 2.0.0 byla napsána znovu od začátku. Aktualizace zachovává počet fotografií, nastavení popisů, tlačítko „Zobrazit více” a zobrazení na domovské stránce a kartě produktu. Dřívější přístupové údaje, feed z hashtagu, staré skripty a možnost obrázku záhlaví jsou odstraněny a účet je třeba znovu připojit novým tokenem.
Požadavky a rozsah fungování
Deklarovaný rozsah kompatibility zahrnuje PrestaShop 1.7.0–9.x a PHP 7.0–8.5. Modul byl testován na PrestaShop 1.7.2.4, 1.7.4.4, 1.7.5.2, 1.7.6.7, 1.7.7.8, 1.7.8.11, 8.0.1, 8.1.5, 8.2.3, 9.0.2 a 9.1.5, se šablonami Classic a Hummingbird. Front funguje bez jQuery; skript má přibližně 12 KB a stylopis přibližně 11 KB před kompresí.
- Server: rozšíření PHP cURL a GD, zapisovatelný adresář
img/pdblockinstagram/a možnost odchozích HTTPS připojení nagraph.instagram.coma servery fotografií Instagramu. - Instagram: profesionální účet (firemní nebo tvůrce); přepnutí soukromého účtu je zdarma. K vytvoření aplikace v Meta for Developers je potřeba účet na Facebooku, stránka na Facebooku není vyžadována. Podle návodu v panelu může aplikace pro čtení vlastního účtu zůstat v režimu vývojáře, bez ověření ze strany Meta.
Modul pouze čte příspěvky připojeného účtu a nic na Instagram nepublikuje. Každý obchod zobrazuje příspěvky jednoho připojeného účtu. Používané API neumožňuje vyhledávání hashtagů, proto modul nezobrazuje příspěvky jiných účtů; filtr „Pouze příspěvky obsahující” funguje na popisech vlastních příspěvků. Stories nejsou v API dostupné a u části reels s licencovanou hudbou Instagram neposkytuje obrázek, takže takové příspěvky jsou vynechány. Videa a reels se v obchodě nepřehrávají a příspěvky s několika fotografiemi jsou reprezentovány první fotografií.