Autor Zpráva
Sonny
Profil *
Dobrý podvečer,

narazil jsem na pro mě zvláštní problém. Mám stránku, která zobrazuje články z určité sekce. tedy blabla.cz/Movies vypisuje vsechny clanky ze sekce Movies tak, ze to prepise na index.php?show=Movies

Na clanky (ne permalink, ten je s cislicemi á la blabla.cz/read/70) odkazuji tak, aby se zobrazil vypis tech clanku v sekci, tzn. klasicke blabla.cz/Movies ale za to jeste pridane #Casino-royale, coz zpusobi, ze se mi po nacteni scrollne na ten správný článek s timhle id. Funguje to bez mod_rewrite, tedy při tomto - blabla.cz/index.php?show=Movies#Casino-royale. To funguje.

Já chci tedy pomocí mod_rewrite:
- místo blabla.cz/Movies/Casino-royale
- podstrčít blabla.cz/index.php?show=Movies#Casino-royale

A problém je, že s mou podmínkou:

RewriteRule ^/([a-zA-Z0-9-]+)/([A-Za-z0-9-]+)$ /index.php?show=$1#$2 [L]

se to přepíše správně (proměnna QUERY_STRING říká show=Movies#Casino-royale, ale jako parametr show nyní bere nejspíš celý ten string Movies#Casino-royale a ne jen to před #. Tzn. ani to nezobrazí tu sekci (hledá to Movies#Casino-royale v názvu sekce) a ani to neodroluje (není kam).

Nevíte někdo, jak s tím hnout?
Díky převelice.
Sonny
Profil *
Prosím, bude to nějaká školácká chybka...
Budu rád za jakoukoliv pomoc, šťouch tím správným směrem.
Díky.
Sonny
Profil *
No došlo mi proč.
Prohlížeč se stará o to odscrollování a prohlížeč tam ten křížek nevidí.
Ale stejně je mi záhadou, proč se "Movies" vypreparuje dobře v případě "index.php?show=Movies#asfdfasdfasdf" a špatně když se použije "/Movies/asdfasdfasdfasd".
Pro mě to je zvláštní.
temistokles
Profil
Ale stejně je mi záhadou, proč se "Movies" vypreparuje dobře v případě "index.php?show=Movies#asfdfasdfasdf" a špatně když se použije "/Movies/asdfasdfasdfasd".

Ako si sám povedal, prehliadač v prípade tvaru URL blabla.cz/Movies/asfdfasdfasdf, netuší, že sa jedná o nejaký odkaz :D Neexistuje spôsob, ako by to zistil (pre neho sú to proste dva priečinky v URL - ktoré nerieši ďalej). Ak je tam však krížik (#), tak vie, že sa jedná o odkaz. Aby si dosiahol rovnaký efekt, musel by si tvoriť adresu blabla.cz/Movies#asfdfasdfasdf a nerozdeliť si to podľa lomítka, ale krížiku.
pmasarik
Profil
Presne tak, kotva teda ten # sa nedá len tak nahradiť.
URL musí byť v tvare blabla.cz/Movies#asfdfasdfasdf
Sonny
Profil
Škoda, už mi to pak z logiky věci taky vyplynulo, že ten prohlížeč vidí JEN adresu s lomítky, ale bez kotvy (#).
I když se tisíckrát řekne slovo "podstrkávání" stejně mi to nedocvakne hned.-)
Díky, tak teď jen vymyslet JAK TO UDĚLAT s hezkými odkazy, aby při blabbla.cz/Movies/Casino-royale zobrazil clanky ze sekce Movies a odroloval nějak na Casino-royale...
Teď mě napadlo, že to udělám ještě líp - předám ten clanek normálně parametrem, a jeste pred vypisem clanku ze sekce Movies se vypise ten clanek Casino-royale (s tim, ze se zamezi, aby se zahrnul i v tom celkovym dotazu do SQL, aby tam pak nebyl dvakrat..)

Jo, to by fungovat mělo. A když bude hned na začátku, bude to podobné, jako jsem to zamýšlel...

Ale poslední věc - přece jen je to odrolování příjemnější - když vezmete URL

alpha.retrodesign.us/Movies#Casino-royale

vs.

alpha.retrodesign.us/Movies/Casino-royale

Co se Vám líbí víc? Když obětuju tu kotvu, lze nějak udělat to odrolování v JS?
temistokles
Profil
Ja by som neobetoval kotvu a nepoužil JS ;)
Sonny
Profil
Neobětoval? takže bys taktéž jak jsem to měl doposud nechal Movies#Casino-royale?
Já už jsem z toho totiž mimo, nejspíš už nemám ten správný úsudek, co je a co není solidní URL.

Jo a vydrž, tu databázi zeměpisných šířek délek ti hned napíšu, jen co najdu v historii, odkud jsem to vyhrabal já.
temistokles
Profil
Sonny
No čosi som napísal :) Nefunguje to na 100%, akurát pár miest blbne, nakoľko nájde v mapy.sk viac odkazov :) Ale cca 90% to spravilo :) Ak však máš niečo, kľudne pošli, budem rád :)

Neobetoval kotvu som myslel tak, že kľudne by som tam nechal krížik, nevidím na takej URl nič zlé. Ty snáď áno? :) Zbytočne používať javascript a podobné veci, pokiaľ to nie je nutné.
Sonny
Profil
Ne, podle mě je url s #v pořádku, jen jsem si potřeboval v hlavě ujasnit, jak se vlastně bude linkovat na články, a pak mi taky dělalo problém, že pokud jsem dal do sekce listování, vypsalo se pouze deset nejnovějších filmů a někdo tam přišel přes odkaz Movies#Casino-royale tak se stalo v zássadě toto:

- nikam mu to neodrolovalo, protože Casino-royale už není mezi prvními deseti nejčerstěvjšími a je až na další stránce v listování.
- nemohl jsem ani odchytit v PHP, aby to ten článek v adrese přidalo natvrdo do selectu, protože TO CO JE ZA KŘÍŽKEM NIC KROMĚ PROHLÍŽEČE NEVIDÍ. Nemám způsob jak to v PHP vycucat.

A ještě nějaké drobnosti. Proto jsem přemýšlel o tom Movies/Casino-royale... A taky proto, že by to tak indexoval líp vyhledávač.
Ale udělal jsem to pohodlnější pro čtenáře, nechal jsem křížek a zrušil listování. Namísto toho je na konci každé sekce zobrazeno (pokud je v ní více článků):

Archiv sekce obsahuje X starších článků:
A už jen s permalinky vypsané titulky. A protože tam vypsané jsou, dám jim id, a když maj id, odroluje to na ně. Voilá, na Movies#Casino-royale to zaroluje až úplně dolů na Archiv, kde je na Casino Royale trvalý odkaz.

Jsem spokojen.-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: