Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - Jednoduchý redakčný systém v Nette - Štruktúra projektu

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Zkusto s.r.o.
Jindřich Máca:3.10.2016 23:14

Tak ji klidně nech tam, kde je... :-D

Avatar
danhosek
Člen
Avatar
danhosek:16.10.2016 21:28

Ahoj, ještě si chci opravit ještě jednu chybu. Jde o načtení css souborů do latte, sčímž je něaký problém.
Css soubory mám ve složce www/css a link na ně v layout.latte:
<link rel="stylesheet" type="text/css" href="{$basePat­h}/css/animate­.css">
<link rel="stylesheet" type="text/css" href="{$basePat­h}/css/style.css">
úplně totéž mám v app\CoreModule\tem­plates\Article uvod.latte (šablona pro úvodní článek).
V uvod se css načtou, ale v layoutu se ne něak moc nevím {$baseath} se definuje v .htaccess? takže nastaví base na www? a pro všechny soubory, které směřují do www/ dám na začátek {$basePath}?(myslim .js soubory a img).
Děkuji.

Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na danhosek
Jindřich Máca:17.10.2016 15:12

No nazdar... Můžeš mi říct, jak se Ti takhle daří plést páté přes deváté? :D

Takže hezky popořadě si to ujasníme.

  1. Proměnou {$basePath} dosazuje Latte do šablon automaticky a standardně odpovídá právě složce www/. V souboru .htaccess se dá také definovat, ale tyto dvě spolu mají pramálo společného.
  2. Šablona @layout.latte se používá úplně vždycky, pokud si to nevynutíš jinak, a teprve do ní se vkládá obsah šablon jednotlivých akcí presenterů. Navzdory tomu, sama o sobě se nikdy neaplikuje, protože samostatně neodpovídá žádné akci presenteru.
  3. V šabloně layout máš tedy následující styly:
<link rel="stylesheet" type="text/css" href="{$basePath}/css/animate.css">
<link rel="stylesheet" type="text/css" href="{$basePath}/css/style.css">

Za předpokladu, že jsou styly správně umístěny ve složce www/ to znamená, že ony styly se Ti díky výše uvedeným vlastnostem @layout.latte aplikují v rámci každé stránky, kterou v projektu máš, pokud sis to nenastavil jinak.

Takže tohle jsou věci, které jsem z Tvého příspěvku pochopil. Můžeš mi pak ale vysvětlit, co znamenají výroky

úplně totéž mám v app\CoreModule\tem­plates\Article uvod.latte

nebo

V uvod se css načtou, ale v layoutu se ne něak moc nevím {$baseath} se definuje v .htaccess?

Nejen, že tam jsou překlepy, ale minimálně ta druhá věta nedává vůbec smysl...

Takže doufám, že Ti můj příspěvek objasnil alespoň část z Tvých dotazů, na zbytek se hold budeš muset zeptat znovu a lépe. :)

Editované
Avatar
danhosek
Člen
Avatar
danhosek:17.10.2016 18:42

Jsem to napsal nepochopitelně, za to se omlouvám.
Mám pro úvodní článek zvláštní šablonu, v ArticleManager mám nastaveno:

if (!$url or $url == self::DEFAULT_ARTICLE_URL){
            $url = self::DEFAULT_ARTICLE_URL;
            $this->template->setFile(__DIR__ . "/../templates/Article/uvod.latte");

aby úvodní článek vypadal jinak.
zbytek vemu se vkládá do layoutu jak má, čímž je layout základ zbylého webu mimo úvod.
Na úvodní stránce se šablona zobrazuje správně a css styly se načtou, ale když najedu na zbytek webu (např.: výpis článků), který se zobrazuje přes layout, tak se css nenačtou. U obou latte šablon je to udělané úplně stejně a přesto to u jednoho se cdd načtou a u druhého ne.
I když u obou šablon ve zdrojovém kˇodu jsou css odkazovány na neeistující složku
href="css/ani­mate.css"
U {$basePath} mě zajímalo právě to, zda to nastaví cestu do složky /www/ a jestli to určí tuto složku pomocí .htaccess, na což jsi mi odpověděl :).

Avatar
danhosek
Člen
Avatar
Odpovedá na danhosek
danhosek:18.10.2016 1:32

Už jsem přišel, v čem byl problém. Měl jsem to udělané správně, ale zobrazoval se starý obsah, tak jsem smazal obsah \temp\cache\latte , čímž se pohledy udělali nové a funkční. :-)

Avatar
T-fon
Člen
Avatar
T-fon:8.11.2017 10:36

Díky mj. za návod na .htaccess.
Byl by někdo ochotný mi poradit, kam vložit kód s přesměrováním na https a bez www? A kam přesně?

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

Nevím jestli ho vložit do tohoto prvního nebo až do druhého .htaccessu v adresáři www.
Ještě bych se chtěl zeptat, proč se tam používá to <IfModule>?

Editované
Avatar
Odpovedá na T-fon
Lukáš Rajchl:5.1.2018 17:38

Sice po dlouhé době odpověď, ale kdo ví, třeba ti ještě pomůže :)

Daný kód si vlož do složky www/.htaccess, za RewriteEngine On

Co se týká <IfModule> tagu, je to podle nastavení Apache serveru, pokud je daný modul vypnutý (mod_rewrite, mod_deflate standardně bývá v čisté instalaci Apache vypnutý), tak se dané části nespustí.

Editované
Avatar
Michal Novák:2.4.2018 15:53

Neměl by se ten .htaccess upravit raději takto?

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^$ www/ [L]
        RewriteCond %{REQUEST_URI} !^www/
        RewriteRule ^(.*)$ www/$1
</IfModule>

Defaultní nette .htaccess zakazuje přístup všude a tím doporučeným .htaccess vlastně dovolíme přístupovat k existujícím souborům a složkám - podle mě zbytečné potencionální riziko nebo se pletu?

Každopádně tento seriál mi hodně pomohl, díky za něj! :-)

Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Michal Novák
Jindřich Máca:2.4.2018 17:52

Ano, pro účely tohoto tutoriálu by to asi bylo lepší jak říkáš. :-)

Obecně se ale může chtít přistupovat k dalším podložkám třeba jako subdomenám a určitě bych všude pro jistotu ty výchozí Nette .htaccess nechal. ;-)

Avatar
Martin Franta:15.11.2018 10:18

jeste sem neprosel dalsi dily, ale kdyz se bude delat CoreModule a predpoklada se, ze by se aplikace rozrostla o dalsi moduly, tak nebylo by prehlednejsi mit i moduly ve vlastni slozce?

misto:

app/CoreModule

pouzit:

app/modules/CoreModule

Je mi jasny ze si to muzu dat jak chci :) Spis by me zajimalo jaka byva obecne praxe, at si hned od zacatku s nette nevytvarim spatny navyky :)

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 31.