Diskuze: změna designu podle časový doby
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 50 zpráv z 62.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Když budeš mít dva soubory CSS, můžeš do HTML pokaždé nalinkovat jiný.
Také můžeš v PHP dynamicky generovat CSS, ale není to tak výhodné.
Časově závislou část CSS můžeš umístit z PHP přímo do HTML.
V .htaccess můžeš udělat přesměrování dle denní doby.
A co když nebude chtít pro změnění načítat stránku - to je právě to - nenapsal co chce...
Chtěl "nějqakej php script". To znamená, že s reloadem stránky počítá.
Samozřejmě se to dá napsat i v Javascriptu, ale to nebylo požadováno.
ok a to dam normalne do
<head></head>
?
a jak pak se udela to nacasování?? diky
PHP by mělo být mimo - nemám rád, když se píší scripty do stránky - proč také - že? V PHP žádné načasování právě nebude - nýbrž podmínka - zda-li je aktuální čas am/pm popř. přesně podle hodin - to je na tobě... Načasovat to můžeš v JS - stránka se změní bez načtení...
ok diky a jak ude ten php kod na timer? nemuzu to nikde najit
Vidíš Kite - já to věděl!
albertpatera
Timer musí být v JS ne v PHP - u klienta ne na serveru. Buď v PHP dáš podmínku a stránka se rozvětví při načítání - buď pro noční režim, či denní. V JS ale můžeš udělat timer, který to změní bez znovunačítání...
Stačí vložit podmínku do souboru css a dát mu příponu php.
No jo, to máš z toho koukání do křišťálové koule. Dnešní web se skládá ze správné kombinace sedmi jazyků a ty se dají poskládat různými způsoby.
Pokud to opravdu chceš v PHP, tak tady je kratky kod co se da vložit do hlavičky, ale nemělo by se to takhle používat.
<?php
$date = (int)Date("H");
if($date < 17){
?>
<link rel="stylesheet" href="style1.css" type="text/css"/>
<?}
else {?>
<link rel="stylesheet" href="style2.css" type="text/css"/>
<?}?>
</head>
To je právě ta nevýhodná varianta. Znemožňuje ukládání CSS do cache u klienta. Tedy pokud si nepohraješ s hlavičkami.
A má PHP něco jako CodeBehind? (Timer u clienta - kód v PHP - AJAX)
Proč bys měl timer u klienta? Stačí měnit CSS dle času, nebo jak psal Michael Olšavský, přepínat CSSka, to se bude cachovat, ale zas člověk musí spravovat 2 soubory.
Těch rozdílů mezi dnem a nocí nebývá mnoho. Proto bych společné vlastnosti dal do jednoho CSS a ty rozdílné generoval přímo do hlavičky HTML.
Ty dva soubory CSS se také dají generovat staticky z PHP.
Po aplikaci DRY by to mohlo vypadat třeba takto:
<?php
$date = (int)Date("H");
$styl=(($date < 19) && ($date >= 7))?'style1.css':'style2.css';
echo <<<EOT
<link rel="stylesheet" href="$styl" type="text/css"/>
</head>
EOT;
Přes .htaccess je to ještě jednodušší, do aplikace není nutné zasahovat.
RewriteEngine On
RewriteBase /
RewriteCond %{TIME_HOUR} >07
RewriteCond %{TIME_HOUR} <19
RewriteRule ^style\.css$ /style-day.css
nejde mi tam zmenit pozadi..
background: url('images/pozadi.jpg')
Zřejmě jsi sem dal funkční část kódu a tu nefunkční si tutláš pro sebe.
Adresář 'images' musí být ve stejném adresáři jako soubor s CSS.
body {
border:5px solid black;
border-color:#00afc00;
border: url("images/gradient.jpg");
}
no ve stejnym adresari to mam
border: url("images/gradient.jpg");
Nemám slov...
border border border border...
background background background...
nevim čim to je, umazal sem tam to ostatni a nechal sem tam jenom
background...
ale nepomohlo to..pozadi se mi tam vubec nezobrazuje...zobrazuje se mi tam
jenom to původní.. fakt
nevim..
Opravdu? Často se setkávám s tím, že někdo dá CSS do souboru css/style.css a obrázek do images/obrazek.jpg a velice se diví, že mu to nefunguje.
Ujasni si, jestli řešíš background nebo border. Nějak moc často to střídáš.
body {
background: white url("images/pozadi.jpg");
}
to sem taky zkouse a nefuguje...nevim co s tim
Prvním parametrem background je barva. Teprve druhým je URL. Některé prohlížeče to mohou zvládnout i bez barvy, ale nemusí.
hele ale ja sem tam mel images a neměl sem tam nasmerovanej adresar a taky
to fungovalo
*
<?php
$date = (int)Date("H");
$styl=(($date < 19) && ($date >= 7))?'den.css':'den.css';
echo <<<EOT
<link rel="stylesheet" href="$den" type="images/css"/>
</head>
EOT;
*
a stejne to nefunguje nevim
fakt uz co s tim je
Také může obrázek s pozadím nahrát do stejného adresáře jako CSS a další podadresáře neřešit.
Máš v ternárním operátoru stejné větve a proměnnou používáš úplně jinou - v href...
Aha, netušil jsem, že je možné to při opisování tak zkonit. Jméno souboru je v $styl, ale odkazuje se na $den.
a jak to má teda bejt správně?..diky
<?php
$date = (int)Date("H");
$styl=(($date < 19) && ($date >= 7))?'den.css':'noc.css';
echo <<<EOT
<link rel="stylesheet" href="$styl" type="images/css"/>
</head>
EOT;
Je tam ještě jedna chyba. Místo
$date = (int)Date("H");
patří
$date = (int)Date("G");
Abych všechno ověřoval...
Co znamená "nejde"? Máš v kořenovém adresáři soubory den.css a noc.css?
no v images ho nemam ale mam ho mimo a jinou slozku tam nemam
Píšeš v hádankách. Kde máš soubory den.css, noc.css, pozadi.jpg a gradient.jpg? Nejlépe bude, když to všechno nahážeš do kořene webu.
den.css mam v sem si presunul do images, noc.css taky a gradient.jpg mam v images
No vidíš, jaký v tom máš binec. A jak to má chudák prohlížeč tušit, když podle linku máš den.css i noc.css ve stejném adresáři, jak index.php?
A proč dáváš CSS do adresáře images? Vždyť to nemá logiku. To jsi měl raději všechno nechat v kořeni webu, když neumíš pracovat s adresáři.
stejne mi to nefunguje....a ja uz fakt nevim
Zobrazeno 50 zpráv z 62.