Mizející DIV

Mizející DIV
« kdy: 21. 10. 2020, 22:05:24 »
nějak si nevím rady, proč zmizí DIV u rotátoru náhledů produktů (carouselu) ve spodní části stránky, když použiji filtraci (po levé části stránky). Používám PS 1.7 a na rotátor je použit Owl carousel.

Je možno otestovat zde:
https://test.darujpoukaz.cz/cviceni



We use on our website Owl Carousel and product module filter. It is used on PrestaShop 1.7.4.

Owl carousel works without any problem, until is used product filter.

On our site: https://test.darujpoukaz.cz/cviceni you can see a Carousel bottom of the page.

V Google konzoli se správně u Owl carousel zobrazuje tento kód:

<div class="carousel_content owl-carousel owl-theme owl-loaded owl-drag">
   <div class="owl-stage-outer">
      <div class="owl-stage" style="XY">
         <div class="owl-item cloned" style="width: 440px; margin-right: 10px;">
            <article class="dpcz-product product-miniature js-product-miniature".....>


Pokud se ale použije filtrace, kód se změní na:

<div class="carousel_content ">                                                           
    <article class="dpcz-product product-miniature js-product-miniature".....>


Většina DIV zmizí a carousel přestane fungovat.

Můžete mi prosím někdo poradit, kde hledat chybu? Děkuji moc.


hechj

Re:Mizející DIV
« Odpověď #1 kdy: 21. 10. 2020, 23:41:15 »
Vždycky, když jsem měl tyto problémy, tak se vždy lišila šablona úvodní stránky od šablony v ajaxu. Zkuste

Re:Mizející DIV
« Odpověď #2 kdy: 22. 10. 2020, 11:50:29 »
Vždycky, když jsem měl tyto problémy, tak se vždy lišila šablona úvodní stránky od šablony v ajaxu. Zkuste


Mohu se prosím zeptat, jak docílím toho, aby se znova Carousel nastartoval?

Soubor modulu v kořenovém adresáři modulu "yetanotheradvancedsearch.php" volá tento soubor, který to celé způsobí:
http://test.darujpoukaz.cz/modules/yetanotheradvancedsearch/views/js/yetanotheradvancedsearch.js

Děkuji moc za jakoukoliv pomoc.

hechj

Re:Mizející DIV
« Odpověď #3 kdy: 22. 10. 2020, 12:49:10 »
V javascriptu to není. To bude jednoduchá chyba s jednoduchým řešením. Zjistěte, co se posílá z php ajaxem do stránky. Je rozhozená struktura, takže carusel nemá tu podobu, kterou má mít, aby se to točilo. Stránka s vyhledanými výsledky nemá tu správnou podobu. Nebo se carusel vkládá do blbého divu a část struktury prostě přepíše. Zkontrolujte šablonu. Víc vám neporadím. Vůbec nijak jsem to nezkoumal, protože nemám tolik času a stejně bych to jen z výřezu nepochopil. Píšu podle svých zkušeností z minulých projektů. Vždycky to byla chyba šablony, protože jsem měl 2, místo abych použil jeden snippet. Nabízím konzultaci za 1000 Kč/hod.

Re:Mizející DIV
« Odpověď #4 kdy: 23. 10. 2020, 09:51:26 »
Děkuji za radu, tuším, že to bude něco velice jednoduchého. Jen jsem celý včerejší den u toho proseděl a zkoumal soubory, kde bych měl co upravit či přidat. Rád bych Vás tedy ještě poprosil, jestli mohu, ve Vašem případě jste upravoval asi nějaký soubor  .php (nikoliv .tpl?). Potřeboval bych spíše jen nasměrovat, zda se mám dívat na soubory .php od modulu product filter, který to způsobuje nebo do souborů šablony webu či do souborů carousel modulu? A případně do daného souboru jste vkládal nějaký kód, který includoval něco, aby se znova inicioval carousel modul - nebo něco, aby se v carousel rozběhlo to točení?
Vážím si Vaší nabídky konzultace, rád na věci přicházím ale sám (samozřejmě s nějakým tím nakopnutím), o to větší je pak radost, když se nalezne řešení :) Děkuji moc za pomoc.


Re:Mizející DIV
« Odpověď #5 kdy: 23. 10. 2020, 11:45:40 »
V hlavním souboru carousel modulu jsem dohledal:

public function hookDisplayHeader()
{
$this->context->controller->addJS($this->_path.'views/js/cp.owl.carousel.js');
}

Zkusil jsem tedy do hlavního php souboru od modulu product filter přidat toto, ale bohužel se to nerozjelo:

public function hookDisplayHeader()
{
$this->context->controller->addJS($this->_path.'../hicarouselspack/views/js/cp.owl.carousel.js', 'all');
}

Daný soubor .js ovládá to rolování, to jsem si již ověřil a cestu z jednoho adresáře modulu do jiného doufám, že mám správně. Ovšem carousel se nespustil :(

Re:Mizející DIV
« Odpověď #6 kdy: 23. 10. 2020, 12:24:10 »
Zde je js, který ten carousel ovládá. Zatím netuším, jakou funkci a atributy pro spuštění mám hledat:
http://test.darujpoukaz.cz/modules/h...wl.carousel.js

Rád bych se zeptal, pokud tu funkci a atributy nějak naleznu, kam bych je měl překopírovat - do jiného .js souboru od modulu product filtru?

Re:Mizející DIV
« Odpověď #7 kdy: 23. 10. 2020, 13:26:34 »
V tomto .js jsem našel funci, která spouští carousel:

http://test.darujpoukaz.cz/modules/hicarouselspack/views/js/cp.owl.carousel.js

Kód: [Vybrat]
function Owl(element, options)
Když ji ale takto přidám do hlavního .js souboru od product filter modulu, tak se carousel sice spustí, ale naopak přestane fungovat ta filtrace produktů. Netušíte, čím to může být?

Soubor .js, kam jsem to zkoušel přidat a rozběhlo se to, ale přestal fungovat filtr:

http://test.darujpoukaz.cz/modules/yetanotheradvancedsearch/views/js/yetanotheradvancedsearch.js
« Poslední změna: 23. 10. 2020, 13:28:11 od JirkaDeLucina »

hechj

Re:Mizející DIV
« Odpověď #8 kdy: 25. 10. 2020, 08:26:48 »
Lze ty 2 moduly použít dohromady? Podpora prestashopu nefunguje? Vyhledávání rozhodí carusel, přepíše mu strukturu. Je potřeba najít šablonu vyhledávání a podívat se, co se vrací ajaxem. Nebo vyhodit carusel do jiné části stránky. Javascript za to nemůže. Vyhledávání ty divy neobsahuje, protože šablona o nějakém owlu vůbec nic neví. Doporučuji použít placený e-shop. Instalace vám peníze nevydělá.

Re:Mizející DIV
« Odpověď #9 kdy: 04. 11. 2020, 16:38:38 »
Podpora Prestashopu neřeší moduly, pouze PS samotný, ti nijak bohužel nepomůžou. Co se týká těch 2 modulů, tak ten filtr nenačítá žádnou svou šablonu, používá AJAX a pomocí něj jen načte vyfiltrované produkty do stávající šablony. Zde problém není. Jelikož AJAX používá i Carousel, tak se navzájem ovlivňují. Jde tedy o to, aby při použití filtrace produktů pomocí AJAXU fungovala i funce Carouselu, která používá také AJAX. Jen nevím, jak to v hlavním .js souboru modulu filtru provést, aby se načetl i AJAX Carouselu a nevypl ho.

hechj

Re:Mizející DIV
« Odpověď #10 kdy: 04. 11. 2020, 23:29:18 »
Prozkoumejte, co při filtrování chodí ajaxem. Bez toho se nepohnete. Pochybuji, že to budou jen produkty bez html. Já myslím, že to přijde i s html a normálně to přeplácne stávající obsah. Prosím, poslechněte mě a udělejte to. Moc prosím.

Re:Mizející DIV
« Odpověď #11 kdy: 05. 11. 2020, 16:06:23 »
Díval jsem se na nastavení modulu pro filtraci produktů. Je tam možnost zobrazovat vyfiltrované produkty pomocí AJAXU, což používáme a produkty se načítají do již načtené aktuální šablony nebo druhou možností je vypnutí ajaxu a načítání produktů do šablony modulu - tuto možnost nepoužíváme, jelikož je pomalejší a šablona modulu úplně rozhodí stránku.

Jde tedy o to, že když se vyfiltrují produkty metodou pomocí AJAXU, tak tento AJAX deaktivuje AJAX, který se stará o Carousel. Potřeboval bych tedy nějak ošetřit, aby se AJAX od carouselu znova restartoval po filtraci produktů nebo nějak ošetřit v kódu AJAXU od modulu filtrace produktů, aby po filtraci spustil i AJAX od carouselu.

V souboru od modulu filtrace produktů jsem našel odkaz na htm zde, ale nevím, zda to k něčemu bude:

Kód: [Vybrat]
function b(t, i) {
L = null, $center = e("#center_column"), 1 == isv7 && ($center = e("#main")), $center.hide("fade", 300, function () {
$center.children().hide(), $center.show(), null == I && (I = $center.children().detach()), $dHtml = e(t.html).hide(), $center.html($dHtml), a(), d(), o(), $center.children().show("fade", {}, "slow", function () {
}), localStorage.setItem("yaasMenu", JSON.stringify(k(t.menu))), r(t.menu, i);
var s = $center.offset().top;
Q && e("html, body").scrollTop() > s && e("html, body").animate({
scrollTop: s
}, 500), e(".yaas_reinit").removeClass("button_disabled").removeAttr("disabled")
})
}

Celý soubor zde:
http://test.darujpoukaz.cz/modules/yetanotheradvancedsearch/views/js/yetanotheradvancedsearch.js

Soubor od carouselu pak zde, pokud by to mohlo pomoci:
http://test.darujpoukaz.cz/modules/hicarouselspack/views/js/cp.owl.carousel.js

tecka

Re:Mizející DIV
« Odpověď #12 kdy: 05. 11. 2020, 17:41:28 »
Co tě pořád drží u toho nesmylu o jakési deaktivaci AJAXu?

Už ses podíval na ty šablony a jaká data se ti přenášejí?

Re:Mizející DIV
« Odpověď #13 kdy: 05. 11. 2020, 20:15:46 »
Modul pro filtraci produktů vůbec nepoužívá své vlastní šablony. Má sice ve složce "views" podsložku "templates", ale z ní nepoužije jediný soubor, pokud je v nastavení modulu vybrána filtrace produktů pomocí AJAXU. Svou šablonu začne používat až tehdy, pokud se v nastavení modulu vypne filtrace pomocí AJAXU (ověřil jsem to). Bohužel filtraci bez AJAXU použít nemůžu, jelikož to rozhodí komplet všechno a je pomalé při načítání. Proto jsem se zaměřil na AJAX, jelikož když není použit, tak Carousel funguje v pořádku.

Co se týká toho přenosu dat, tak to bych poprosil, jak na to přijdu, jaká data se přenášejí? V minulém příspěvku jsem tady dal odkaz na .js od modulu pro filtraci produktů, ale nevím, zda hledám na správném místě. Děkuji za čas a trpělivost s tímto problémem a jeho řešením :)

hechj

Re:Mizející DIV
« Odpověď #14 kdy: 05. 11. 2020, 23:03:02 »
Tady končím. Odtud s tím nic neudělám. Vyhledávání žádný ajax nevypíná. Vyhledávání přeplácne seznam produktů i s caruselem novým obsahem a v něm chybí div, který carusel potřebuje pro správnou funkci. V základu nejspíš carusel nepočítá s tím, že by mohl být použit společně s ajaxovým vyhledáváním (nebo naopak). Ale zkoumat to nebudu. Už mi lezete na nervy. Hledáte radu a nenecháte si poradit.