NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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 – Lekce 5 - Jednoduchý redakční systém v Nette - Struktura projektu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá na Zkusto s.r.o.
Jindřich Máca:3.10.2016 23:14

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

 
Odpovědět
3.10.2016 23:14
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.

 
Odpovědět
16.10.2016 21:28
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. :)

Editováno 17.10.2016 15:13
 
Odpovědět
17.10.2016 15:12
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 :).

 
Odpovědět
17.10.2016 18:42
Avatar
danhosek
Člen
Avatar
Odpovídá 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í. :-)

 
Odpovědět
18.10.2016 1:32
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>?

Editováno 8.11.2017 10:36
 
Odpovědět
8.11.2017 10:36
Avatar
Odpovídá 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í.

Editováno 5.1.2018 17:39
 
Odpovědět
5.1.2018 17:38
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! :-)

 
Odpovědět
2.4.2018 15:53
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;-)

 
Odpovědět
2.4.2018 17:52
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 :)

 
Odpovědět
15.11.2018 10:18
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 10 zpráv z 31.