Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: PavliskoH 25. 01. 2018, 15:41:37
-
Zdravim, poradte mi jak se dela drobeckova navigace?
Myslel jsem, ze se to delá podle adresy, kdyz bude adresa
example.com/Komponenty/DiskySSD/2,5/SATA III
tak drobeckova navigace bude
Komponenty » Disky » SSD » 2,5" » SATA III
jenze dneska je adresa ve tvaru
example.com/nejaky-disk.html
a drobeckova navigace je stejne
Komponenty » Disky » SSD » 2,5" » SATA III
Jak se to dela? To jako kazda stranka ma ulozenou celou tu strukturu a nacita se z db spolu s obsahem? To snad ne. Diky za vysvetleni.
-
Zdravim, poradte mi jak se dela drobeckova navigace?
Myslel jsem, ze se to delá podle adresy, kdyz bude adresa
example.com/Komponenty/DiskySSD/2,5/SATA III
tak drobeckova navigace bude
Komponenty » Disky » SSD » 2,5" » SATA III
jenze dneska je adresa ve tvaru
example.com/nejaky-disk.html
a drobeckova navigace je stejne
Komponenty » Disky » SSD » 2,5" » SATA III
Jak se to dela? To jako kazda stranka ma ulozenou celou tu strukturu a nacita se z db spolu s obsahem? To snad ne. Diky za vysvetleni.
Dělá to server v modu_rewrite, podívejte se sem https://www.jakpsatweb.cz/server/mod-rewrite.html
-
Tak jsem to prelouskal ale ani jedna zmínka o drobeckove navigaci tam neni.
-
<ul>
<li><a href="Komponenty">Komponenty</a></li>
<li><a href="Komponenty/Disky">Disky</a></li>
<li><a href="Komponenty/DiskySSD">SSD</a></li>
<li><a href="/Komponenty/DiskySSD/2,5"">2,5</a></li>
<li><a href="/Komponenty/DiskySSD/2,5/SATA III"">SATA III</a></li>
</ul>
A pravidla pro mod_rewrite vám zajistí namapování symbolického URL na reálné url skriptu, který vám vygeneruje požadovanou stránku, z url zjistíte, co chcete vypsat.
-
Tak jsem to prelouskal ale ani jedna zmínka o drobeckove navigaci tam neni.
ja si myslim ze to tam celkom presne je :)
https://www.jakpsatweb.cz/server/mod-rewrite.html#promenne
-
Tak jsem to prelouskal ale ani jedna zmínka o drobeckove navigaci tam neni.
ja si myslim ze to tam celkom presne je :)
https://www.jakpsatweb.cz/server/mod-rewrite.html#promenne
Tazatel se ale myslím neptá na mapování url, nýbrž na konstrukci drobečkové navigace. Na to bych odpověděl, že tvůrce webu nadefinuje nějakou strukturu kategorií. Řekněme, že se jedná např. o e-shop a produkt může mít jednu hlavní kategorii. Při načtení url adresy produktu v prohlížeči se dohledá odpovídající id produktu a jeho údaje se přečtou z databáze (přitom vazba url - id produktu může být udělaná různě, nejjednodušeji bude v url uvedeno přímo id produktu + název produktu pro lepší seo). V načtených údajích bude uvedena i jeho hlavní kategorie a do drobečkové navigace se vyrenderuje celá cesta k této kategorii s odpovídajícími odkazy. Pokud jsou kategorie vnořené, bude tam několik úrovní. Stejně to bude fungovat i při zobrazení samotné kategorie (pak se z databáze nenačte jeden produkt, ale samotná kategorie a jednotlivé produkty do ní zařazané). Mod rewrite nemusí být vůbec ve hře a bude to fungovat stejně i na jiném serveru či v úplně jiném programovacím jazyce/frameworku.
-
<ul>
<li><a href="Komponenty">Komponenty</a></li>
<li><a href="Komponenty/Disky">Disky</a></li>
<li><a href="Komponenty/DiskySSD">SSD</a></li>
<li><a href="/Komponenty/DiskySSD/2,5"">2,5</a></li>
<li><a href="/Komponenty/DiskySSD/2,5/SATA III"">SATA III</a></li>
</ul>
A pravidla pro mod_rewrite vám zajistí namapování symbolického URL na reálné url skriptu, který vám vygeneruje požadovanou stránku, z url zjistíte, co chcete vypsat.
Vazne nechapu jak muze vygenerovat z adresy
example.com/nejaky-disk.html
tohle<ul>
<li><a href="Komponenty">Komponenty</a></li>
<li><a href="Komponenty/Disky">Disky</a></li>
<li><a href="Komponenty/DiskySSD">SSD</a></li>
<li><a href="/Komponenty/DiskySSD/2,5"">2,5</a></li>
<li><a href="/Komponenty/DiskySSD/2,5/SATA III"">SATA III</a></li>
</ul>
aniz by to nebylo nekde ulozeny :(
-
Tak jsem to prelouskal ale ani jedna zmínka o drobeckove navigaci tam neni.
ja si myslim ze to tam celkom presne je :)
https://www.jakpsatweb.cz/server/mod-rewrite.html#promenne
Tazatel se ale myslím neptá na mapování url, nýbrž na konstrukci drobečkové navigace. Na to bych odpověděl, že tvůrce webu nadefinuje nějakou strukturu kategorií. Řekněme, že se jedná např. o e-shop a produkt může mít jednu hlavní kategorii. Při načtení url adresy produktu v prohlížeči se dohledá odpovídající id produktu a jeho údaje se přečtou z databáze (přitom vazba url - id produktu může být udělaná různě, nejjednodušeji bude v url uvedeno přímo id produktu + název produktu pro lepší seo). V načtených údajích bude uvedena i jeho hlavní kategorie a do drobečkové navigace se vyrenderuje celá cesta k této kategorii s odpovídajícími odkazy. Pokud jsou kategorie vnořené, bude tam několik úrovní. Stejně to bude fungovat i při zobrazení samotné kategorie (pak se z databáze nenačte jeden produkt, ale samotná kategorie a jednotlivé produkty do ní zařazané). Mod rewrite nemusí být vůbec ve hře a bude to fungovat stejně i na jiném serveru či v úplně jiném programovacím jazyce/frameworku.
Díky, presne tohle me zajíma ;) nejaky example pro pochopeni by nebyl?
-
Vazne nechapu jak muze vygenerovat z adresy ...
aniz by to nebylo nekde ulozeny :(
To je samozřejmě uloženo v databázi... Nevidím v tom žádnou magii.
-
V databázi je uložen strom kategorií. Každý element má kromě odkazu na svého rodiče ještě URL na popisek své kategorie. Každá položka ceníku má odkaz na některý z listů tohoto stromu. Při zobrazování drobenkové navigace stačí projít cestu od listu ke kořeni tohoto stromu kategorií.
Pokusy o realizaci v mod_rewrite jsou cestou do pekel. Čtyřřádkový .htacces obvykle stačí.
-
V databázi je uložen strom kategorií. Každý element má kromě odkazu na svého rodiče ještě URL na popisek své kategorie. Každá položka ceníku má odkaz na některý z listů tohoto stromu. Při zobrazování drobenkové navigace stačí projít cestu od listu ke kořeni tohoto stromu kategorií.
Pokusy o realizaci v mod_rewrite jsou cestou do pekel. Čtyřřádkový .htacces obvykle stačí.
To je ale hodně naivní implementace, daleko efektivnější je ukládat rovnou celou cestu k dané kategorii, ne jen odkaz na rodiče.
Tedy např. /1/12/13/58.
-
V databázi je uložen strom kategorií. Každý element má kromě odkazu na svého rodiče ještě URL na popisek své kategorie. Každá položka ceníku má odkaz na některý z listů tohoto stromu. Při zobrazování drobenkové navigace stačí projít cestu od listu ke kořeni tohoto stromu kategorií.
Pokusy o realizaci v mod_rewrite jsou cestou do pekel. Čtyřřádkový .htacces obvykle stačí.
To je ale hodně naivní implementace, daleko efektivnější je ukládat rovnou celou cestu k dané kategorii, ne jen odkaz na rodiče.
Tedy např. /1/12/13/58.
Pokud k tomu účelu používáš relační databázi, tak máš samozřejmě pravdu.
-
nekdy je to komplikovanejsi, treba kdyz je produkt ve vice kategoriich, pak se treba spravna drobeckovka resi ze session(a pri prazdne se vybere defaultni kategorie)... tohle vubec neni o php. resi se to podobne jako se resi treba menu. ty informace jsou nekde v DB. casto ve frameworku byva nejaka obecne API a ty si vyresis konkretni implementaci podle toho jak to zakaznik pozaduje.
-
Tazatel se ale myslím neptá na mapování url, nýbrž na konstrukci drobečkové navigace. Na to bych odpověděl, že tvůrce webu nadefinuje nějakou strukturu kategorií. Řekněme, že se jedná např. o e-shop a produkt může mít jednu hlavní kategorii. Při načtení url adresy produktu v prohlížeči se dohledá odpovídající id produktu a jeho údaje se přečtou z databáze (přitom vazba url - id produktu může být udělaná různě, nejjednodušeji bude v url uvedeno přímo id produktu + název produktu pro lepší seo). V načtených údajích bude uvedena i jeho hlavní kategorie a do drobečkové navigace se vyrenderuje celá cesta k této kategorii s odpovídajícími odkazy. Pokud jsou kategorie vnořené, bude tam několik úrovní. Stejně to bude fungovat i při zobrazení samotné kategorie (pak se z databáze nenačte jeden produkt, ale samotná kategorie a jednotlivé produkty do ní zařazané). Mod rewrite nemusí být vůbec ve hře a bude to fungovat stejně i na jiném serveru či v úplně jiném programovacím jazyce/frameworku.
Díky, presne tohle me zajíma ;) nejaky example pro pochopeni by nebyl?
Nevím o žádném příkladu, který by byl pro laika dostatečně čitelný a pokrýval celé téma. Skrývá se tam toho hodně (konfigurace serveru, základy php, základy sql, uložení stromové struktury v databázi - zde je na výběr z několika implementací).
-
Nevím o žádném příkladu, který by byl pro laika dostatečně čitelný a pokrýval celé téma. Skrývá se tam toho hodně (konfigurace serveru, základy php, základy sql, uložení stromové struktury v databázi - zde je na výběr z několika implementací).
Hotovo, nebylo to ani tak slozity jak se na oprvni pohled zdalo. Tak ze necham dekovat.
-
V databázi je uložen strom kategorií. Každý element má kromě odkazu na svého rodiče ještě URL na popisek své kategorie. Každá položka ceníku má odkaz na některý z listů tohoto stromu. Při zobrazování drobenkové navigace stačí projít cestu od listu ke kořeni tohoto stromu kategorií.
Pokusy o realizaci v mod_rewrite jsou cestou do pekel. Čtyřřádkový .htacces obvykle stačí.
To je ale hodně naivní implementace, daleko efektivnější je ukládat rovnou celou cestu k dané kategorii, ne jen odkaz na rodiče.
Tedy např. /1/12/13/58.
To tedy rozhodně není naivní implementace. Je pouze neefektivní pro čtení, ale to se má řešit až následně optimalizací. Ukládat celou cestu rovnou je přímo klasickým příkladem nevhodné předčasné optimalizace a kdo tohle dělá, skončí dříve či později v pekle vlastního bídného designu. Stromová struktura s vazbou potomků na rodiče by měla být primárním uložením kategorií, protože je dobře normalizovaná a dá se s ní tudíž lépe manipulovat. Celá cesta pro potřeby rychlého čtení by se měla generovat sekundárně do nějaké cachovací tabulky (nebo třeba dalšího sloupce v primární tabulce), případně do výkonné externí cache (např. memcached), pokud je to třeba z hlediska výkonu. V malých "školních" projektech, kde se počítá s minimální zátěží, kolikrát ale není takové cachování ani potřeba.
-
jj ta cesta je "fakt dobra" kdyz mas dragndrop strom kategorii aby tu strukturu mohl uzivatel(editor) upravovat. stejna tak kdyz mas strukturu kde muze mit kategorie vice rodicu, kde produkt muze byt ve vice kategoriich atd.