Autor Zpráva
NAItReIN
Profil
Ahoj,
keďže mi pribúdajú stránky na webe, potrebujem si zaviesť nový systém, aby som sa vedel dobre orientovať. Keď zadám do prehliadača adresu (napríklad) http://www.mojadomena.sk/galeria/2013/1, tak chcem, aby sa mi zobrazila stránka, ktorej adresa je v tomto tvare.
Momentálne to tam urobené takto: http://www.mojadomena.sk/galeria/2013-1/ a pod.

Chcem docieliť toho, aby som mal na serveri zložku galeria, v nej zložky podľa jednotlivých rokov.

Ďakujem.
scheras
Profil *
Není podmínkou mít přesně takovouto strukturu adresářů. Stačí nastavit pár pravidel v souboru .htaccess. Jak na to najdete třeba na JakPsátWeb.cz.
NAItReIN
Profil
Ďakujem veľmi pekne za radu. Nanešťastie neviem aj tak čo ďalej.
martin1312
Profil
Robím s CI, ale naozaj nerozumiem, čo potrebuješ. Skús to lepšie popísať.
Pri url http://www.mojadomena.sk/galeria/2013/1 by sa ti mal spustiť controller galeria a v ňom metóda index (ak máš nastavený default na index, čo zrejme áno) s parametrami 2013 a 1. Ak by bolo parametrov viac ako 2 tak sa pretransformujú na array.
NAItReIN
Profil
Ahoj martin1312,
skúsim to vysvetliť lepšie. Prebral som správu webovej stránky od jedného známeho, ktorý sa tomu už nechce venovať. Pre mňa bol CI niečo úplne nové, ale postupne som sa naučil robiť veci, ktoré som najviac potreboval.
Na serveri v zložke system/application/views/galeria, v ktorom mám všetky stránky obsahujúce fotoalbumy. V tejto zložke je cca 40 stránok.

V súbore routes v zložke system/application/config/routes.php sa nachádza okrem iného toto:

$route['default_controller'] = "catheg";
$route['scaffolding_trigger'] = "";
$route['galeria/(:any)'] = "catheg/galeria/$1";   

controllers v zložke system/application/controllers/catheg.php obsahuje okrem iného toto:
function galeria()
{
    /* udalosti v roku 2010*/
    if ($this->uri->segment(2) == '2010-1') $this->load->view('galeria/2010-1');
    elseif ($this->uri->segment(2) == '2010-2') $this->load->view('galeria/2010-2');
    elseif ($this->uri->segment(2) == '2010-3') $this->load->view('galeria/2010-3');

Ja chcem teda docieliť toho, že budem mať v tej zložke galeria ďalšie zložky, napríklad takto:
system/application/views/galeria/2010
system/application/views/galeria/2011
system/application/views/galeria/2012
system/application/views/galeria/2013
system/application/views/galeria/2014

Vedel by si mi pomôcť?

Ďakujem za každú radu :)
martin1312
Profil
Aha, už tomu rozumiem. Je to riešené trochu dosť škaredo, ale čo už...
Teda chceš, aby pri zadanej URL http://www.mojadomena.sk/galeria/2013/1 sa načítal view z system/application/views/galeria/2013/1.php?
<?php
function galeria() 
{
  $seg2 = $this->uri->segment(2);
  $seg3 = $this->uri->segment(3);
  if($seg2 && $seg3)
  {
    if(file_exists(APPPATH."views/galeria/".$seg2."/".$seg3.".php"))
      $this->load->view("galeria/".$seg2."/".$seg3);
  }
}

tento kód ale nerieši, ak bude chýbať v URL mesiac, teda napr. http://www.mojadomena.sk/galeria/2013/, to môžeš ošetriť použitím druhého parametru pri $this->uri->segment(), viď. dokumentácia.
NAItReIN
Profil
Dakujem velmi pekne za pomoc. Vyskusam to.

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: