Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zobrazení části stránky na jiné stránce

Aktivity
Avatar
Petr Břeň
Člen
Avatar
Petr Břeň:8.11.2021 15:09

Zdravím,
v systému Shoptet se snažím načíst prvek Hodnocení obchodu ze stránky https://www.bio-krasa.cz/…eni-obchodu/ - mělo by to být .content-inner - a zobrazit ho na úvodní stránce jako HTML banner. Při řešení, které jsem vymyslel, je ale banner prázdný.

Zkusil jsem: Do <head></head> jsem přidal:

<script>
$(document).re­ady(function(){
$('#hodnoceni-obchodu').load('/hod­noceni-obchodu .content-inner'); //zkoušel jsem i bez lomítka před hodnoceni-obchodu
});
</script>

Do banneru jsem dal:

<div id="hodnoceni-obchodu">
</div>

 
Odpovědět
8.11.2021 15:09
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.11.2021 15:57

Musis ujasnit, co pouzivas....

$(document) - naznacuje, ze pouzivas jquery nebo jiny framework, ale treba casto se pouziva bindovani pres

var $ = document.querySelector.bind(document);
var $$ = document.querySelectorAll.bind(document);

Takze, vlastne neni jiste, co $ je za funkce nebo framework/api. Potom se neda najit v dokumentaci, jak se pise load a co dela.
Pokud budu vychazet z jquery, tak https://api.jquery.com/load/

.load( url [, data ] [, complete ] )
.load('/hodnoceni-obchodu .content-inner');

Prvni parametr je URL ty tam davas nejakou kravinu a ne url. Nicmene... Zda se, ze jquery skutecne umi nacist cast stranky...

$( "#result" ).load( "ajax/test.html #container" ); // Loading Page Fragments

Ale, kdyz si o tom neco prectes, tak to dela podle ID, porotze ID je unikatni, narozdil od class, kterou muze mit spolecnou vice prvku.

 
Nahoru Odpovědět
9.11.2021 15:57
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.11.2021 16:00
main id="content"
 
Nahoru Odpovědět
9.11.2021 16:00
Avatar
Petr Břeň
Člen
Avatar
Petr Břeň:11.11.2021 13:52

Zdravím, děkuju moc.
Je to jQuery, konkrétně 1.11.3 (to je dané na Shoptetu, nemůžu to změnit), úplně jsem zapomněl to zmínit, omlouvám se.
Co se týče výběru prvku podle třídy versus podle ID, zmátlo mě to, že v jednoduchém příkladu, co jsem zkoušel, to fungovalo i podle třídy, ale to bylo asi díky tomu, že v kódu byla třída použita jen jednou.
URL si myslím že mám správně, ne? S doménou to AFAIK být nemůže, protože by to porušilo "same origin policy" a zkoušel jsem jak "/hodnoceni-obchodu" tak "hodnoceni-obchodu" a nešlo to ani s jedním.
Zkusil jsem to tedy podle ID místo podle třídy:

$('#hodnoceni-obchodu').load('/hodnoceni-obchodu #content');

ale výsledný div je pořád prázdný, asi to selektuju nějak málo konkrétně, nevím.

 
Nahoru Odpovědět
11.11.2021 13:52
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.11.2021 20:10

nejdriv si zkus jen samotnou url. treba je problem nekde jinde. Ono, ale loadovani obsahu vetsinou pracuje asynchronne. jakoze spustis program na pozadi, ten downloaduje a pa spusti funkci, kterou mu zadas. Kdyz nezadas nic, tak se nic nedeje po stahovani. To zkus treba upravit, jak maji v poslednim prikladu, aby to vypsalo treba error.

<script>
$( "#success" ).load( "/not-here.php", function( response, status, xhr ) {
  if ( status == "error" ) {
    var msg = "Sorry but there was an error: ";
    $( "#error" ).html( msg + xhr.status + " " + xhr.statusText );
  }
});
</script>
 
Nahoru Odpovědět
11.11.2021 20:10
Avatar
Petr Břeň
Člen
Avatar
Petr Břeň:12.11.2021 14:32

Díky moc. No, tak ukázalo se, že chyba byla v tom, že můj kód byl ve stránce dřív, než volání jQuery. Takže když jsem ho přemístil z <head> před konec <body>, tak už to funguje..

 
Nahoru Odpovědět
12.11.2021 14:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.11.2021 15:32

Tak to se samozrejme z tveho prispevku nedalo vydedukovat. Celou cast kodu tam nemas. To chce vzdycky zkouset zvlast z minimalnim kodem a upravovat jen funkcni kod. Kdyz ti neco pak nejde, muzes hledat rozdily mezi tim funkcnim a tim novym .Nebo do funkcniho postupne doplnovat zmeny a pokazde, kdyz to funguje, tak si to ulozit. Ja to delam ve Faru F5, *.1 (2,3,4,..), enter

 
Nahoru Odpovědět
12.11.2021 15:32
Avatar
Petr Břeň
Člen
Avatar
Odpovídá na Peter Mlich
Petr Břeň:16.11.2021 17:32

Díky za radu s verzováním. Stejně se budu muset naučit zacházet s Gitem:). Mně vůbec nenapadlo, že jQuery v <head> může v Shoptetu být příliš brzo.. až pak jsem si všiml čísel řádků. Myslím, že to změnili, dřív jsem různé append() a insertAfter() používal v <head> a fungovalo to.

 
Nahoru Odpovědět
16.11.2021 17:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18.11.2021 10:00

Mozne je vsechno. Dneska se meni browser temer ze dne na den :)
Ono, zalezi na tom, jak to mas napsane v te head. Urcite poradi tam musi byt. $.load by mel simulovat body.onload.

 
Nahoru Odpovědět
18.11.2021 10:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.