Avatar
Danny
Člen
Avatar
Danny:

Ahoj všem, rád bych Vás poprosil, jestli by jste mi nepomohli s vytvořením jazykové mutace, teda spíš s friendlyUrl. Nebo případně jak to řešíte vy, bez použití databáze a RS.
Mám stránku tvořenou klasicky v index.php, kam natahuju přes GET podstránky a další části webu. Pak jsem si nastavil jako výchozí $lang = "cs", no a pomocí ikonek přepínám mezi jazyky. Všechno mi funguje, ale nejsem schopný docílit toho, abych pak parametr pro italštinu podržel v URL, tak aby to vypadalo v url nějakak takto: domena.cz/home/it a v český verzi by bylo pouze domena.cz/domu.
momentálně to mám ve tvaru v české verzi tak jak to chci pomocí .htaccees, ale nejsem schopný ho nastavit tak aby mi to dělal i s druhým parametrem "it"
takže v italštině to mám takto domena.cz/home&lan­g=it

Moc Vám děkuji za rady

Editováno 26.1.2015 17:51
 
Odpovědět 26.1.2015 17:51
Avatar
BlugW
Redaktor
Avatar
Nahoru Odpovědět 26.1.2015 17:55
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Danny
Člen
Avatar
Odpovídá na BlugW
Danny:

Díky, přesně tento článek jsem taky našel, zkoušel a nepovedlo se mi to. Jako logicky mi taky přišlo dá tam druhý parametr, ale nefungovalo mi to nebo jak by to bylo potom zapsáno v navigaci?
Když vezmu svoje české menu, tak mám jenom názvy souborů v odkazech, takto:

<a class="uvod-nav" href="domu" >Úvod</a>

Ale jak tam potom přidám ten druhý parametr lang="it"?

 
Nahoru Odpovědět 26.1.2015 18:02
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Danny
BlugW:

Vezmu že mám url example.com/?pa­ge=reference&id=25

RewriteRule ^reference/([a-zA-Z0-9_-]+)/$ ?page=reference&id=$1
RewriteRule ^reference/([a-zA-Z0-9_-]+)$ ?page=reference&id=$1

Pak url vypadá -> example.com/re­ference/25

PS: Aby to fungovalo musíš zapnout Mod Rewrite:

RewriteEngine On

PS1: Doufám že jsem se nikde nesekl, jelikož jsem to použivál už docela dávno :D

Editováno 26.1.2015 18:09
Nahoru Odpovědět 26.1.2015 18:07
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Danny
Člen
Avatar
Odpovídá na BlugW
Danny:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^([^/]*)$ /index.php?str=$1 [nc,L,QSA]

Pak teda jak jsem psal, do href"" přijde jenom název souboru, bez koncovky php, ale teď bych teda měl mít v href to jak jsi psal? toto například?
?page=referen­ce&id=25
a toto je tam proč prosim tě? ^reference/([a-zA-..... to musim zapsat pro každou podstránku?

Editováno 26.1.2015 18:30
 
Nahoru Odpovědět 26.1.2015 18:30
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Danny
BlugW:

Ano pro každou.

To ^reference ti vlastně nahradí "/?page=referen­ce&id="
Takže místo toho máš jenom /reference/

Editováno 26.1.2015 18:34
Nahoru Odpovědět  +1 26.1.2015 18:34
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Danny
Člen
Avatar
Odpovídá na BlugW
Danny:

Omlouvám se, ale pořád mi to nefunguje :(
Já už vyzkoušel takových verzí a funguje mi jenom ta jedna s jedním parametrem a tohle vůbec. Nemůže to být tim, že to mám na locale?

 
Nahoru Odpovědět 26.1.2015 18:55
Avatar
Danny
Člen
Avatar
Odpovídá na Danny
Danny:

MOhl bys mi prosím Tě ukázat jednu položku, jak by teda byla v htaccess a jak v href=""...jestli tam nedělám nějakou koninu.

 
Nahoru Odpovědět 26.1.2015 19:05
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Danny
BlugW:

Pokud máš v url vice parametru tak to dáš takto:

id=$1&id1=$2&id2=$3

v htaccess takto:

RewriteRule ^reference/([a-zA-Z0-9_-]+)/$ ?page=reference&id=$1
RewriteRule ^reference/([a-zA-Z0-9_-]+)$ ?page=reference&id=$1

v href takto>

/reference/id
Např.:
/reference/25/
Editováno 26.1.2015 19:40
Nahoru Odpovědět  +1 26.1.2015 19:38
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Denis Homolík (Alfonz):

Přečti si zdejší tutoriály o MVC, tebe bude zajímat .htaccess a URLParser :)

Nahoru Odpovědět 26.1.2015 20:22
Vše je možné, dokud si to myslíte!
Avatar
Danny
Člen
Avatar
Odpovídá na Denis Homolík (Alfonz)
Danny:

Já to četl, ale ještě se v tom dost ztrácím no :( myslel jsem že to pomocí htacces bude jednodušší ale jak je vidět, tak neni, protože mi to stále nefunguje :-/

Editováno 26.1.2015 20:26
 
Nahoru Odpovědět 26.1.2015 20:25
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Danny
Marek Z.:

Mohu poprosit tvůj htaccees?

Nahoru Odpovědět 26.1.2015 20:49
Chybami se člověk učí, běžte se učit jinam!
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Danny
BlugW:

Ono to je jednoduchý, jen to musíš pochopit :D
1 to uděláš správně a hned se budeš smát jak je to easy.

Jinak, radši se opravdu uč OOP -> MVC -> Framework (ja použivám symfony2, ale v Česku je in asi Nette)

Pár krát si něco zkus a hned to pochopíš jelikož jen číst teorii nestačí(většině). :)

Nahoru Odpovědět 26.1.2015 21:24
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Danny
Člen
Avatar
Odpovídá na BlugW
Danny:

Konečně se mi to asi podařilo rozchodit :D

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^([^/]*)$ /index.php?str=$1 [NC,L,QSA]
RewriteRule ^home/([a-zA-Z0-9_-]+)/$ ?str=home&lang=$1
RewriteRule ^home/([a-zA-Z0-9_-]+)$ ?str=home&lang=$1
RewriteRule ^chi-siamo/([a-zA-Z0-9_-]+)/$ ?str=chi-siamo&lang=$1
RewriteRule ^chi-siamo/([a-zA-Z0-9_-]+)$ ?str=chi-siamo&lang=$1
RewriteRule ^azienda/([a-zA-Z0-9_-]+)/$ ?str=azienda&lang=$1
RewriteRule ^azienda/([a-zA-Z0-9_-]+)$ ?str=azienda&lang=$1

...a tak dál

Akorát jediný co jsem musel ještě udělat, tak ve většine linků na skripty a CSS jsem musel dát před cestu lomítko, jde to nějak řešit? než to manuálně přidávat? Jinak už to funguje bezva, takže díky moc :O

Jinak MVC a OOP se učim, ale ještě v tom nejsem moc schopný něco vytvořit. Ani neni nikdo kdo by mě trochu navedl, i když zdejší články jsou super, ale někdy mě něco uplně nedojde a tak s tim dost bojuju, :)
Především se bojim zabezpečení databáze. Navíc musim pořešit nějak to, že když spadne na serveru databáze, tak mi to vypíše hlášku a v ní jsou přihlašovací údaje. Ale to je už OT, takže ještě jednou díky moc :)

 
Nahoru Odpovědět  +1 26.1.2015 21:53
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Danny
Marek Z.:

Zkus nahradit:

RewriteRule ^([^/]*)$ /index.php?str=$1 [NC,L,QSA]
RewriteRule ^home/([a-zA-Z0-9_-]+)/$ ?str=home&lang=$1
RewriteRule ^home/([a-zA-Z0-9_-]+)$ ?str=home&lang=$1
RewriteRule ^chi-siamo/([a-zA-Z0-9_-]+)/$ ?str=chi-siamo&lang=$1
RewriteRule ^chi-siamo/([a-zA-Z0-9_-]+)$ ?str=chi-siamo&lang=$1
RewriteRule ^azienda/([a-zA-Z0-9_-]+)/$ ?str=azienda&lang=$1
RewriteRule ^azienda/([a-zA-Z0-9_-]+)$ ?str=azienda&lang=$1

Tímto:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ /?str=$1 [QSA,NC,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /?str=$1&lang=$2 [QSA,NC,L]

RewriteRule ^(.+)/$ /$1 [R,L]

Poslední řádek ti zajistí, že ti to z url na konci s / přesměruje na url bez lomítka.

/home/cs/ -> /home/cs

Nahoru Odpovědět  +2 27.1.2015 10:10
Chybami se člověk učí, běžte se učit jinam!
Avatar
Danny
Člen
Avatar
Odpovídá na Marek Z.
Danny:

Ahoj, tvoje řešení funguje také, paráda. Kluci díky moc :)
Jen že jsem zvědavý, proč najednou přestala fungovat cesta ke stylům href="css/sty­le.css" a musel jsem před všechny vložit lomítko?
Díky

 
Nahoru Odpovědět  +1 27.1.2015 12:28
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Danny
BlugW:

Tys tam vypsal všechno :D

Prostě místo parametru dáš $1, $2, $3, atd...
Takže vlastně vše se dalo zkrátit na 2 řádky jak ti to napsal Mara :D

Jinak nevím proč tam musíš dávat "/" mě to šlo ok.

měl jsem to ve složce takhle takhle :
root->css
->js
->scripts

Editováno 27.1.2015 15:04
Nahoru Odpovědět  +2 27.1.2015 15:03
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Danny
Člen
Avatar
Odpovídá na BlugW
Danny:

Aha :D no proto jsem se ptal jestli to musim vypsat pro každou podstránku :D tak jsem to vypsal no :D nevadí, aspoň mám cvik :D
já mám taky v rootu index.php a ve složkách, CSS, JS, Images a podobně. Všude jsem musel dát lomítko před cestu takže:

href="/css/st­yle.css"

jinak mi naběhly stránky bez stylů

 
Nahoru Odpovědět 27.1.2015 15:19
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Danny
Marek Z.:

To je síla cest a není dobré ji podceňovat.

/ a bez lomítka bere cestu z aktuálního adresáře.

Když máš tedy url www.priklad.cz/home/cs tak ti to bere soubory jako s adresáře cs, který však není. Tudíž musíš říci, že musí brát soubory z nadřazenýho/výcho­zího adresáře, pokud se nejedná o podložky apod. ../.

EDIT: Vlastně ./ je stejné jako / či bez, aktuální adresář.
Takže ../, to říká ajko by nadřazený adresář.

Editováno 27.1.2015 17:06
Nahoru Odpovědět 27.1.2015 17:04
Chybami se člověk učí, běžte se učit jinam!
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Marek Z.
Marek Z.:

Zamotal jsem se do toho.. :D

/ není to samé, vždy odkáže na kořenový..

Nahoru Odpovědět 27.1.2015 17:10
Chybami se člověk učí, běžte se učit jinam!
Avatar
Danny
Člen
Avatar
Odpovídá na Marek Z.
Danny:

Jo takhle, tak už je mi to jasnější :-) každopádně diky moc za ochotu a trpělivost :-) až trochu proniknu do OOP tak to zkusim vyřešit parsováním adresy. Asi bych věděl trochu jak, ale zase nevim jak bych tam řešil italštinu, no prostě si v tom OOP nejsem vubec jistý. Zatim to řeším větvením if/else.
Ještě jednou diky :-)

 
Nahoru Odpovědět  +1 27.1.2015 18:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.