Autor Zpráva
Aleš Ulrych
Profil
Zdravím všechny,
mám problém a doufám, že mi s ním nějaký odborník na PHP poradí.
Oč jde.
Potřeboval bych upravit kód, který funguje, když je vložený přímo do stránky, ale nevím jak ho upravit, aby fungoval, když bude načtený přes link.
Nyní funkční vypadá takto:

<style type="text/css">
@media (max-width:320px){
div#hlavicka{background-image:url(<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/obrazky/Logo_IF-320.jpg?<?php echo filemtime(TEMPLATEPATH . '/obrazky/Logo_IF-320.jpg'); ?>);}
}
</style>


Pokud ovšem dám link na odkaz na css styl, např. tento

<link rel="stylesheet" href="<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/CSS/IF_sablona.css?<?php echo filemtime(TEMPLATEPATH . '/CSS/IF_sablona.css.css'); ?>" type="text/css"  />

a do souboru IF_sablona.css napíši místo původního kódu:
@media (max-width:320px){
div#hlavicka{background-image:url(../obrazky/Logo_IF-320.jpg);}
}

ten, který mi ve vložený stránce funguje:

@media (max-width:320px){
div#hlavicka{background-image:url(<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/obrazky/Logo_IF-320.jpg?<?php echo filemtime(TEMPLATEPATH . '/obrazky/Logo_IF-320.jpg'); ?>);}
}

hlavička se mi nenačte. Dokážete mi upravit php zápis do samostatného css souboru upravit tak, aby mi fungoval stejně, jako přímo vložený do stránky?

Chtěl bych to z důvodu, protože jsem vytvořil cirka 15 samostatných hlaviček, každou pro jiné rozlišení. PHP kód tam mám kvůli načtení hlaviček do cache (google pagespeed insights poradil) a nechci mít kvůli tomu na každé stránce 15x @media s 15 hlavičkama. :)

Díky moc za pomoc

Aleš

Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Alphard
Profil
Bylo by dobré podívat se do vygenerovaných zdrojových kódů a problém lokalizovat blíže než že se nenačte hlavička.
První problém, který se nabízí, je, že se PHP kód v externím souboru s příponou .css vůbec nevykoná. Takže změnit příponu na .php a pak se na ten soubor podívat. Možná tam nebude zadefinová konstanta TEMPLATEPATH , v jedné cestě je chybný název souboru atd.
Aleš Ulrych
Profil
Alphard:
Za nepoužití značek se omlouvám. V PHP vůbec nedělám, takže nemám ponětí, jak a co skoumat. Výše uvedený kód jsem prostě našel v různých zahraničních diskuzích, když jsem hledal, jak optimalizovat stránky a odstranit chyby dle doporučení Google PageSpeed Insights. Tam jsem našel tento kód, který když jsem použil u obrázků, css a js souborů, mi odstranil chyby s keší. Pokud jsem to pochopil správně,
mělo by to přidat v prohlížeči ke každému objektu časovou značku, která když bude stejná, řekne prohlížeči, že ten soubor už nemusí znovu načítat. A právě toto mi ještě chybí u hlavičky, patičky a pár obrázků, které se nemění a mám je použité v externím css jako background prvku. No a tam bych chtěl, pokud to tedy půjde, také použít PHP kód pro časovou značku.

Vnuknul si mi nápad, který funguje. Přejmenoval jsem soubor IF_sablona.css na IF_sablona.php na začátku jsem vložil pouze:
<?php 
 header('Content-Type: text/css'); 
?> 
a hle, už to fugnuje. :)
Alphard
Profil
Aleš Ulrych:
a hle, už to fugnuje. :)
Ne tak úplně, koukl jsem na vaši stránku (moderátoři vidí i neveřejný email), je tam např. tento kód (obvykle se zobrazí pomocí Ctrl-U, záleží na prohlížeči)
href="***/CSS/interflag_sablona-respon.php?"
Začátek adresy cenzuruji, ale podstatný je ten konec. Tato část <?php echo filemtime(TEMPLATEPATH . '/CSS/IF_sablona.css.css'); ?> se vůbec nevypíše, zřejmě kvůli chybné cestě.
Aleš Ulrych
Profil
Díky za upozornění, jelikož mi obrázky i styly fungovali, a PageSpeed Insights už chybu nehlásil, usoudil jsem, že kód funguje. Jak vidím, tak ne.
Zkusil jsem ho ještě upravit těmito způsoby, ale výsledek je stále stejný. :(

<link rel="stylesheet" href="<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/CSS/interflag_sablona-respon.php?<?php echo filemtime ("http://" . $_SERVER['SERVER_NAME'] . '/CSS/interflag_sablona-respon.php'); ?>" type="text/css"  />

ani když jsem tam zadal přímý odkaz na soubor:
<link rel="stylesheet" href="<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/CSS/interflag_sablona-respon.php?<?php echo filemtime ("http://www.vlajky.cz/CSS/interflag_sablona-respon.php"); ?>" type="text/css"  />

Je potřeba k použítí filemtime ještě něco v PHP na stránce nastavit? Nebo kde může být chybička?
Alphard
Profil
Musí se použít cesta v rámci file systému, ne přes http wrapper.
Aleš Ulrych
Profil
Alphard:
Můžeš to prosím nějak upřesnit, ideálně s ukázkou nějakého kódu? Rád bych výše uvedenou věc zprovoznil :)
Už nemusíš, nyní by to mělo fungovat. Po chvilce pátrání je finálový kód tento:
<link rel="stylesheet" href="<?php echo "http://" . $_SERVER['SERVER_NAME']; ?>/CSS/interflag_sablona-respon.php?<?php echo filemtime($_SERVER['DOCUMENT_ROOT'] . '/CSS/interflag_sablona-respon.php'); ?>" type="text/css"  />

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: