IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jazykové mutace

Aktivity
Avatar
Danny
Člen
Avatar
Danny:26.1.2015 17:51

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
Nahoru Odpovědět
26.1.2015 17:55
Neaktivní uživatelský účet
Avatar
Danny
Člen
Avatar
Odpovídá na Neaktivní uživatel
Danny:26.1.2015 18:02

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
Odpovídá na Danny
Neaktivní uživatel:26.1.2015 18:07

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
Neaktivní uživatelský účet
Avatar
Danny
Člen
Avatar
Odpovídá na Neaktivní uživatel
Danny:26.1.2015 18:30
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
Odpovídá na Danny
Neaktivní uživatel:26.1.2015 18:34

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
26.1.2015 18:34
Neaktivní uživatelský účet
Avatar
Danny
Člen
Avatar
Odpovídá na Neaktivní uživatel
Danny:26.1.2015 18:55

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:26.1.2015 19:05

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
Odpovídá na Danny
Neaktivní uživatel:26.1.2015 19:38

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
26.1.2015 19:38
Neaktivní uživatelský účet
Avatar
alfonz
Člen
Avatar
alfonz:26.1.2015 20:22

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
lmao
Avatar
Danny
Člen
Avatar
Odpovídá na alfonz
Danny:26.1.2015 20:25

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
Odpovídá na Danny
Uživatel sítě :26.1.2015 20:49

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
Odpovídá na Danny
Neaktivní uživatel:26.1.2015 21:24

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
Neaktivní uživatelský účet
Avatar
Danny
Člen
Avatar
Odpovídá na Neaktivní uživatel
Danny:26.1.2015 21:53

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
26.1.2015 21:53
Avatar
Odpovídá na Danny
Uživatel sítě :27.1.2015 10:10

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
27.1.2015 10:10
Chybami se člověk učí, běžte se učit jinam!
Avatar
Danny
Člen
Avatar
Odpovídá na Uživatel sítě
Danny:27.1.2015 12:28

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
27.1.2015 12:28
Avatar
Odpovídá na Danny
Neaktivní uživatel:27.1.2015 15:03

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
27.1.2015 15:03
Neaktivní uživatelský účet
Avatar
Danny
Člen
Avatar
Odpovídá na Neaktivní uživatel
Danny:27.1.2015 15:19

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
Odpovídá na Danny
Uživatel sítě :27.1.2015 17:04

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
Odpovídá na Uživatel sítě
Uživatel sítě :27.1.2015 17:10

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 Uživatel sítě
Danny:27.1.2015 18:35

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
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.