Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: PavliskoH 25. 01. 2018, 15:41:37

Název: Jak se dnes dělá drobečková navigace v PHP?
Přispěvatel: 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
Kód: [Vybrat]
example.com/Komponenty/DiskySSD/2,5/SATA IIItak drobeckova navigace bude
Kód: [Vybrat]
Komponenty » Disky » SSD » 2,5" » SATA IIIjenze dneska je adresa ve tvaru
Kód: [Vybrat]
example.com/nejaky-disk.htmla drobeckova navigace je stejne
Kód: [Vybrat]
Komponenty » Disky » SSD » 2,5" » SATA IIIJak 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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Ivan Nový 25. 01. 2018, 15:57:46
Zdravim, poradte mi jak se dela drobeckova navigace?
Myslel jsem, ze se to delá podle adresy, kdyz bude adresa
Kód: [Vybrat]
example.com/Komponenty/DiskySSD/2,5/SATA IIItak drobeckova navigace bude
Kód: [Vybrat]
Komponenty » Disky » SSD » 2,5" » SATA IIIjenze dneska je adresa ve tvaru
Kód: [Vybrat]
example.com/nejaky-disk.htmla drobeckova navigace je stejne
Kód: [Vybrat]
Komponenty » Disky » SSD » 2,5" » SATA IIIJak 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
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: PavliskoH 25. 01. 2018, 16:34:51
Tak jsem to prelouskal ale ani jedna zmínka o drobeckove navigaci tam neni.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Ivan Nový 25. 01. 2018, 16:58:39
Kód: [Vybrat]
<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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: asdf111 25. 01. 2018, 17:14:14
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
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Ondrej Nemecek 25. 01. 2018, 18:32:09
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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: PavliskoH 25. 01. 2018, 18:34:34
Kód: [Vybrat]
<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
Kód: [Vybrat]
example.com/nejaky-disk.htmltohle
Kód: [Vybrat]
<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  :(
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: PavliskoH 25. 01. 2018, 18:44:52
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?
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Honza 25. 01. 2018, 18:45:10
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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Kit 25. 01. 2018, 19:34:27
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čí.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Honza 25. 01. 2018, 20:07:13
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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Kit 25. 01. 2018, 20:15:06
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.
Název: Re:Jak se dnes dělá drobečková navigace v PHP?
Přispěvatel: to_je_jedno 25. 01. 2018, 20:52:01
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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: Ondrej Nemecek 25. 01. 2018, 21:33:17
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í).
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: PavliskoH 25. 01. 2018, 23:35:45
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.
Název: Re:Jak se dela dneska drobeckova navigace na strankach v php
Přispěvatel: X 26. 01. 2018, 09:42:49
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.
Název: Re:Jak se dnes dělá drobečková navigace v PHP?
Přispěvatel: to_je_jedno 26. 01. 2018, 10:27:52
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.