Autor Zpráva
Smajchl
Profil *
Ahoj,

Potřebuju poradit. Mám stránku s mnoha kategoriememi a v každé kategorii jsou články. Postupem času jich tam je ale moc a menu po pravé straně je moc dlouhé, chtěl bych udělat kategorie zavírací, aby se daly klikem zobrazit články v ní, nebo zas schovat.

Problém je ale jak uchovat informace o tom, která kategorie je otevřená a která zavřená. Tuhle funkci jsem chtěl udělat v javascriptu, ale nevím jak v javascriptu uchovat proměnnou po celou dobu návštěvy stránky -> uživatel si otevře kategorii, klikne na článek a kategorie zůstane otevřená.

Poraďte mi jak na to.
grimword
Profil
v js nevim, v PHP se takoveto informace uchovavaji pomoci sessions nebo cookies (pri prechazeni mezi strankami)
Nox
Profil
JS myslim taky umí pracovat s cookies
Smajchl
Profil *
A myslíte si, že cookies je vhodný použít na toto? Jestli jo tak dík za radu. Javascript umí cookies, v tom neni porblém.

Ještě mě napadly hidden prvky ve formulářích, což si myslim že na tohle použití neni vhodný a navíc bych musel použít jazyk na straně serveru a pak metoda GET a to je asi nejošklivější, tu nechci použít. Nic dalšího mě nenapadlo.
imploder
Profil
Na tohle jsou ideální rámy.
Smajchl
Profil *
Rámy? Proboha to ne, navíc ta stránka už je hotová tak jak je, nebudu jí předělávat.
grimword
Profil
a co to vyresit pres PHP? kdyz pomoci PHP zjistis, na ktere strance se nachazi (clanek o ferrari - rozbalis menu auta-sportovni-zahranicni) a je to
imploder
Profil
grimword
a co to vyresit pres PHP? kdyz pomoci PHP zjistis, na ktere strance se nachazi (clanek o ferrari - rozbalis menu auta-sportovni-zahranicni) a je to
jj a k tomu udělat rozbalování ostatních JavaScriptem. Myslel jsem ale, že chce mít možnost rozbalit/sbalit víc zároveň a jakoukoliv kombinaci rozbalených a sbalených, která tak vznikne, zachovat i po kliknutí na odkaz. Pokud stačí, aby se zachovala rozbalená jenom kategorie, do které patří daná stránka (a kterou uživatel logicky musel mít rozbalenou, když na odkaz na ni klikl), pak v tom není žádný problém.
imploder
Profil
Pokud to ale má zůstat porozbalováno tak, jak to uživatel před kliknutím na odkaz zrovna naklikal, tak to tak jednoduše nepůjde.
Smajchl
Profil *
Imploder: přesně tak to chci :-)
Nox
Profil
Nevím jestli "vhodné", ale myslim že by ty cookies použít šlo (ať jako JS nebo PHP), vzhledem ke své povaze (nedůvěrné uživatelské nastavení) vhodné
jsou, jen si nejsem jistý strukturou, kterou by uchovávaly, ale asi by to šlo
imploder
Profil
Pak jsou, pokud nechceš při rozbalování/sbalování kategorií tahat nic ze serveru, tyto možnosti:
1) bude to dělat java script a stav se bude ukládat do cookies
2) taky to bude dělat java script a při každém rozbalení nebo sbalení nastaví všem odkazům do proměnné kód, podle kterého pak PHP skript příslušné kategorie sbalí nebo rozbalí. Ten kód nemusí být žádná šílenost, stačilo by číslo od 1 do 2^10 (protože kategorií je 10 a každá může mít 2 stavy). Místo náročného přepisování hrefu ve všech odkazech by snad šlo tam tu proměnnou přilípnout JavaScriptem při události onClick nebo přesměrováním při onUnload.
imploder
Profil
Takže JS v kombinaci s metodou GET se mi jeví jako nejlepší řešení. Nevyžaduje to cookies.
Nox
Profil
imploder
Ovšem vyžaduje JS + docela dlouhá URL + po opuštění stránky nastavení skončí

Šly by asi použít i jiný způsoby (jako session, db...) s tím, že by se ukládalo průběžně vždycky skriptem na začátku stránky
los
Profil *
Prípadne na to môžeš zneužiť window.name, ktoré sa zachováva aj medzi požiadavkami.
imploder
Profil
Nox
Šly by asi použít i jiný způsoby (jako session, db...) s tím, že by se ukládalo průběžně vždycky skriptem na začátku stránky
To je všechno v PHP, každé rozbalení/sbalení by se muselo řešit přes server. Aby se nemuselo nic načítat, na to bude JS potřeba tak jako tak. Rozšíření URL o třeba ?r=1023 (tj. všechny rozbaleny) není přehnaně dlouhé. Až na serveru by se to převedlo na binární číslo.
Leo
Profil
"Prípadne na to môžeš zneužiť window.name, ktoré sa zachováva aj medzi požiadavkami"

A prenasi se i do jine domeny, z cehoz plynou mozne bezpecnostni problemy, Leo

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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