Zpětný link = odkaz „Zpět na předchozí stránku“
- raia
- Člen | 25
Ahoj,
začínám s Nette a rád bych na svých stránkách udělal „zpětný
link“. Co tím myslím – v šabloně stránky (nazvěme ji „1“) bych
uvedl odkaz „Zpět“, který by odkazoval na stránku, ze které jsme na tuto
aktuální stránku přišli (nazvěme ji „0“). Přičemž 0 by mohla být
jakákoliv jiná stránka webu.
Toto lze řešit klasickým předáním „backlinku“.
Pokud ale stránka „1“ má být zpětným odkazem u další stránky (řekněme „2“), pak při návratu z „2“ do „1“ ztratíme informaci o tom, kam se vracet z „1“.
Zkoušel jsem tu něco takového hledat, ale nepodařilo se.
Chci se tedy zeptat, je něco takového implementováno v Nette?
Případně, nemáte nějaké Best Practise, jak s tímto pracovat?
Napadlo mne řešení pomocí dočasné „cache“ zpětných linků = prostě rozšířit StoreRequest (pracuje s expirací) a RestoreRequest o souvstažné pole zpětnýcj linků. Pokud by nějaký zpětný link vyexpiroval, vracela by se defaultní stránka daného presenteru.
Díky za jakékoliv návrhy, zkušenosti, dotazy.
- Honza Kuchař
- Člen | 1662
@Ondřej Brejla: Řešil bych to stejně. Nebo možná odkaz na referrer. Ale nedělal bych v tom žádné složitosti.
- Ondřej Brejla
- Člen | 746
Myslíš že bude „Mega sexy SEO a cool“ pokud jeden odkaz bude pokaždé odkazovat jinam podle toho, odkud přišel user?
- Panda
- Člen | 569
Myslím, že Ondra chtěl naznačit, že odkaz, který bude pokaždé odkazovat jinam podle toho, odkud přišel uživatel (uživatel je i bot vyhledávače, jen se mu třeba nemusí líbit sessions, cookies a další parametry v adrese), Ti moc v SEO nepomůže. Nemluvě o textu „Zpět“…
Pokud bych něco takového musel implementovat já, tak bych si asi sestavoval prosté pole adres a v něm se navigoval. Jen pozor na podmínky, za jakých odkaz do pole přidávat – určitě nechceš mít v navigaci „odeslaný formulář“, AJAXové požadavky a tak.
- Ondřej Brejla
- Člen | 746
Tím jsem chtěl říct, že vynalézat a implementovat podobné fičury za účelem zvednutí SEO je naprostý nesmysl. V případě opodstatněné nutnosti této funkcionality bych bez výčitků implementoval řešení pomocí javascriptu.
- Ondřej Mirtes
- Člen | 1536
Já bych nic takového neimplementoval a nechal uživatele mačkat tlačítka zpět/vpřed, které má ve vlastním prohlížeči.
Přijde mi, že vývojáři chtějí stále více přejímat a vynalézat kolo u věcí, které jsou řešeny na úrovni aplikace/zařízení, ve kterém je web prohlížen. Což dokonale provést nejde a ani nemá smysl to dělat.
- ic
- Člen | 430
raia napsal(a):
Nejde o megasexy a cool věc. Jde spíš o to, jestli to bude „funkční“, aneb jestli by to "SEO " daných stránek zvedlo. Pokaždé to totiž bude odkazovat na stránku v rámci daného webu, ne mimo.
Pokud jde o to aby odkaz zpět tuto funkci prováděl jen v rámci daného
webu, to se dá přece lehce ošetřit podmínkou i v tom javascriptu u
history.go(-1)
.
Případně vygenerovat na serveru odkaz podle referreru a taky ho podmínit
tím jestli referrer byl z vlastního webu.
Jestli druhý způsob bude mít vliv na pozici ve vyhledávači nevím, ale
pokud ano budeš nahoře při hledání slova ‚zpět‘ XD
- srigi
- Nette Blogger | 558
Ondřej Mirtes napsal(a):
Já bych nic takového neimplementoval a nechal uživatele mačkat tlačítka zpět/vpřed, které má ve vlastním prohlížeči.
Přijde mi, že vývojáři chtějí stále více přejímat a vynalézat kolo u věcí, které jsou řešeny na úrovni aplikace/zařízení, ve kterém je web prohlížen. Což dokonale provést nejde a ani nemá smysl to dělat.
K tomuto sa musim pripojit. David alebo niekto vyznamny z cz raz tweetol, ze useri su sice uplne lamy ale jednu vec pri browsovani internetom pochopili dokonale – tlacitko „Zpet“.
- Ped
- Člen | 64
Ja tam davam natvrdo nejakou url pro lidi bez javascriptu (a robotum?) a lidem s JS to prepisu na history.go(-1).
<p id="back">
<a href="{link ...nekam kde to dava nejvetsi smysl..}">"Back" to "somewhere"</a>
<script type="text/javascript">
document.getElementById("back").innerHTML =
'<a href="javascript:window.history.go(-1);">Back<\/a>';
</script>
</p>
- toka
- Člen | 253
To ano, ale pokud se dostane třeba uživatel na detail produktu z vyhledávacího formuláře, tak by tlačítko „Zpět“ mělo vracet do výsledků vyhledávání. Pokud se na detail dostane klikáním ve stromu produktů, tak „Zpět“ by ho mělo vracet o úroveň výše.
Ač se mi to nikdy moc nelíbilo, řešit tuto situaci pomocí JS, a vždy
jsem si nějakou informaci, odkud požadavek přišel, ukládal, tak nyní jsem
pro, to řešit přes JS: javascript:history.go(-1);
– je to
nejjednodušší.
Drobečková navigace je super, můžu doporučit Navigation od Honzy Marka, ale i tak, je potřeba nějak řešit situace, kdy je možné přijít na stránku více způsoby. Viz uvedené vyhledávání.
Pokud se vám něco z mého tvrzení nelíbí, nekamenujte mne, ale spíše mne zajímá vaše řešení. Rozhodně více řešení, než argument „to je nesmysl“.
- raia
- Člen | 25
No, trochu jsem se do toho zamotal a SEO jsem vytáhl jak úplnej ňoumič – to je až ta poslední věc. To, co to zmínil toka je asi nejblíž tomu, na co jsem se chtěl zeptat, jen nevěděl, jak to vyjádřit. Takže se všem omlouvám za vytvoření diskuze nad „zbytečným tématem“.
Spíš jsem měl vytvořit dotaz na vámi používané koncepty provázání více formulářů.
Presenter v Nette společně s flash zprávami a formulářovým komponentem umí moc hezky zpracovávat jeden formulář.
Představme si ale, že těch formulářů máme víc a je třeba je provázat. Zkusím napsat příklad z praxe (zrovna co řeším):
- Mám formulář, kterým zadávám Album (createNewAlbum). Součástí tohoto formuláře je i zvolení Autora (select). Pokud tento select neobsahuje požadovaného Autora, je k dispozici odkaz (formulářový submit) na formulář díky němuž se může zadat Autor.
- Při přechodu na zadání Autora je tedy nutné uložit rozpracované Album (createNewAlbum), předám flash zprávu o uložení, a předám „zpětný odkaz“ , ne backlink, ale odkaz na stránku fillEditedAlbum s ID předvytvořeného záznamu Alba.
- Jsem tedy na „stránce“ (nechci používat slovo presenter, jelikož ten může být pro oba formuláře stejný, jen se jedná o jinou akci) createNewAuthor. Zpětný odkaz ukazuje, ne na createNewAlbum, ale na fillEditedAlbum.
Předpokládám, že správný koncept by pro splnění tohoto mohl být:
- odeslání createNewAlbum
- zpracování Albumu
- redirect/forward(?) na fillEditedAlbum (s příznakem pro následné přesměrování na vytvoření nového Autora)
- redirect(?) na createNewAuthor, a nakonec
- zobrazení flash zprávy o tom, že bylo Album předuloženo.
Toto by mělo umožnit vrácení pomocí javascript:history.go(-1); na fillEditedAlbum , ok?
(backlink by byl taktéž na fillEditedAlbum, tak aby po vyplnění autora bylo možné stránku znovu přesměrovat na editaci Alba, ok? )
Pokud by na stránce vytvoření Autora bylo zase něco podobného jak na Albumu – např. „vytvoř nové datum narození“ = createNewBirthdayDatum, zpracovávalo by se předání z Autora obdobně, jak bylo uvedeno výše.
Nicméně, pokud bych se chtěl vracet z třetí úrovně na první, návrat
z třetí na druhou nebude mít backlink první, ale třetí (tzn
javascript:history.go(-1); mne vrací na vytvoření/editaci „nového datumu
narození“ namísto editaci Alba (což je a není správně)).
Je tedy třeba se po zpracování data narození vrátit
forwardem/redirectem na editAlbum a od tama přejít znovu na editaci
Autora?
Stejně tak editace Autora si musí pamatovat, že „zpět“ vás má vrátit na editaciAlbumu, ne Data narození.
A jak to udělat tak, aby se na jednotlivé formuláře s editací mohlo přistoupit přímo z jakékoliv stránky a na ni se po dokončení editace (více úrovní editací) mohli vrátit?
Doufám, že jsem ten můj dotaz popsal už nějak smysluplněji.
Díky za jakékoliv ohlasy.
PS: Jedu na PHP 5.3 / Nette 9.3
Editoval raia (18. 5. 2010 9:24)