|
[ balkan7 @ 18.11.2009. 21:41 ] @
| Napravio sam funkciju za dodavanja koda u html tag <head>, recimo da zelim da dodajem neki javascript code ili style.css.
Ali na localhost dobjem sledecu gresku: Warning: stristr() [function.stristr]: Empty delimiter in C:\xampp\htdocs\site\header_includes.php on line 8
header_includes.php
Code: <?php
$page_head_tags = "";
function add_to_head($tag=""){
global $page_head_tags;
if(!stristr($page_head_tags, $tag)){
$page_head_tags .= $tag."\n";
}
}?>
header.php
Code: <?php
include("header_includes.php");
?>
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test Site</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link rel="stylesheet" href="stil.css" type="text/css" media="screen" />
<?php if (function_exists("add_to_head")) { echo add_to_head(); } ?>
</head>
<body>
index.php
Code: <?php
include_once("header.php");
add_to_head("<link rel='stylesheet' href='blue.css' type='text/css' media='screen' />");?> |
[ Miroslav Ćurčić @ 18.11.2009. 21:56 ] @
Zeza te ovo: echo add_to_head();
Tu si verovatno hteo da napišeš: echo $page_head_tags;
[ balkan7 @ 18.11.2009. 22:11 ] @
Da da vidim da me zeza: echo add_to_head();
Prosto nemogu se snaci, ima li neko resenje za ovo ?
[ Miroslav Ćurčić @ 18.11.2009. 22:36 ] @
Napisao sam ti rešenje.
:)
[ balkan7 @ 18.11.2009. 22:41 ] @
Hvala ti na pomoc ali nije bio to resenije, morao sam da napravim jos jednu funkciju za output i dodati u footer-a
Code: $output = ob_get_contents();
ob_end_clean();
echo handle_output($output);
Resio sam problemcic :)
[ Man-Wolf @ 18.11.2009. 23:05 ] @
Nisi ti resio problem, nego si samo "sakrio" gresku koja se prikazivala :-)) Mislim da bi ovo trebalo da ti odradi posao:
Code:
function add_to_head($tag=""){
global $page_head_tags;
if(!empty($tag) && !stristr($page_head_tags, $tag)){
$page_head_tags .= $tag."\n";
}
}
I posle samo:
Code:
echo $page_head_tags;
[ balkan7 @ 19.11.2009. 13:50 ] @
Mozda si u pravo ali sinoc kad sam proverio kod bio sam iznenadjen, na index-u mogao sam dodat javascript code a i menjat <title>, ali kad sam proverio contact.php i ostali fajlova nista nisam mogao dodati ili menjati.
Neznam sta nije uredu sa ovim kodom...
header_includes.php
Code: $page_head_tags = "";
$page_title = "Test - ";
function set_title($title=""){
global $page_title;
$page_title = $title;
}
function add_to_title($addition=""){
global $page_title;
$page_title .= $addition;
}
function add_to_head($tag=""){
global $page_head_tags;
if(!stristr($page_head_tags, $tag)){
$page_head_tags .= $tag."\n";
}
}
function handle_output($output){
global $page_head_tags, $page_title;
if(!empty($page_head_tags)){
$output = preg_replace("#</head>#", $page_head_tags."</head>", $output, 1);
}
if($page_title != "Test - "){
$output = preg_replace("#<title>.*</title>#i", "<title>".$page_title."</title>", $output, 1);
}
return $output;
}
header.php
Code: include("header_includes.php");
function get_head_tags(){
echo "<!--[if lte IE 7]><style type='text/css'>.clearfix {display:inline-block;} * html .clearfix{height: 1px;}</style><![endif]-->";
}
?>
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<?php if (function_exists("get_head_tags")) { echo get_head_tags(); }?>
</head>
footer.php
Code:
$output = ob_get_contents();
ob_end_clean();
echo handle_output($output);
index.php
Code: include_once("header.php");
add_to_head("<link rel='stylesheet' href='blue.css' type='text/css' media='screen' />");
add_to_title("Bla Bla Bla");
[ Man-Wolf @ 19.11.2009. 14:51 ] @
Pa ti si zakomplikovao ovo iz sve snage, majkemi :p :p
Za pocetak, ne stigoh da ti kazem sinoc (a iskreno mrzelo me posle da pisem ponovo :P):
Ova tvoja funkcija:
Code:
function add_to_head($tag=""){
global $page_head_tags;
if(!stristr($page_head_tags, $tag)){
$page_head_tags .= $tag."\n";
}
}
Ima za ideju da proveri da li je vec inkludovana neka skripta/link/sta vec i ako jeste, nece je inkludovati opet ... I ok, to ce da radi u slucaju da ti probas:
Code:
add_to_head('<script type="text/javascript" src="javaskripta.js"></script>');
add_to_head('<script type="text/javascript" src="javaskripta.js"></script>'); // Ovo nece ubaciti (nece duplirati)
Ali, ti napisi:
Code:
add_to_head('<script src="javaskripta.js" type="text/javascript"></script>'); // Ovo ce ubaciti, i dobices dupliran include skripte ...
Dalje ... Kad si se vec uhvatio proceduralnog stila pisanja, zar nije bilo lakse da napises ovako nesto:
header_functions.php:
Code:
$page_title = "Test - ";
$header_includes = "";
function add_to_title($title = '')
{
global $page_title;
$page_title .= $title;
}
function add_to_head($tag = '')
{
global $header_includes;
// Sad mozes da napravis onu tvoju proveru, iako nije najsrecnija (kao sto sam vec pomenuo ...)
if(!empty($tag) && !stristr($header_includes, $tag)){
$header_includes .= $tag."\n";
}
}
function print_headers()
{
global $page_title;
global $header_includes;
// Stampaj TITLE
echo "<title>$page_title</title>";
// Stampaj include-ove
echo $header_includes;
}
I sad lepo u index.php:
Code:
include_once("header_functions.php");
add_to_head("<link rel='stylesheet' href='blue.css' type='text/css' media='screen' />");
add_to_title("Bla Bla Bla");
header.php:
Code:
<head>
<?php print_headers() ?>
</head>
I to bi trebalo da sljaka lepo :-)
Btw, pogledaj ovu klasu koju je radio Nikola Poša:
http://www.nikolaposa.in.rs/moj-rad/php-klase/head-section (klasa za rad sa Header-ima)
Pozz!
[ balkan7 @ 19.11.2009. 15:12 ] @
Hvala ti postavio sam tvoj code ali oped isto sta god da ubacim u add_to_head nista ne includuje, a kod add_to_title dobijem default vrednost $page_title = "Test - ";
Neznam ocemu je rec ...
[ balkan7 @ 19.11.2009. 16:00 ] @
Probao sam klasu od Nikola. Sad je drugacije recimo imam u header.php
Code: <html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php include_once("HeadSection.php");?>
<body>
<div align="center">
<table class="table" cellspacing="0" cellpadding="0">
<tr>
<td>
<img border="0" src="img/header.jpg" width="400" height="200"></td>
da nepisem ostali kod e sad kod indexa postavio sam kod za head section
Code: require_once("header.php");
$headSectionParams = array(
'title' => 'My site',
'meta' => array('name'=>'keywords', 'content'=>'test, generate, head'),
'css' => array('stil.css', 'menu.css'),
'js' => array('functions.js', 'js/test.js'),
);
$headSection = new HeadSection(array('contentType'=>null, 'indent'=>8), $headSectionParams);
$headSection->addJs('test.js');
$headSection->addTitle(" | Test");
echo $headSection;
e sad kad idem u izvorni kod prikazuje se Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
<div align="center">
<table class="table" cellspacing="0" cellpadding="0">
<tr>
<td>
<img border="0" src="img/header.jpg" width="400" height="200"></td>
TEK OVDE IDU HEAD TAGOVI
Kako da postavim tagove da idu posle Code: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
[ balkan7 @ 19.11.2009. 17:42 ] @
Man-Wolf probao sam tvoje dvije opcije ali vracam se na prvu, ako u header dodam samo:
header.php
Code: <head>
<?php echo print_headers(); ?>
</head>
dobijam sledecu gresku: Fatal error: Call to undefined function print_headers() in C:\xampp\htdocs\site\header.php on line 11
dok u index-u includujem Code: include_once("header_functions.php");
a ako postavim include_once("header_functions.php"); u header.php i obrisem sa index-a onda sve sto napises u funkciju add_to_head nista se neprikazuje, prikazuje kao prazna...
[ Man-Wolf @ 19.11.2009. 18:25 ] @
Cek, nisam imao vremena da gledam sve, al ja rekoh da napises:
Code:
<?php print_headers(); ?>
A ne:
Code:
<?php echo print_headers(); ?>
:-)
I naravno, treba da inkludujes tu skriptu sa ovim f-jama ... :-)
[ balkan7 @ 19.11.2009. 18:35 ] @
Sve sam uradio kako sta si napisao ali oped ista greska, postavio sam i sa Code: <head>
<?php print_headers(); ?>
</head> ali nece.
Fatal error: Call to undefined function print_headers() in C:\xampp\htdocs\site\header.php on line 11
[ Man-Wolf @ 19.11.2009. 18:59 ] @
Citat: Man-Wolf:
I naravno, treba da inkludujes tu skriptu sa ovim f-jama ... :-)
header.php:
Code:
<head>
<?php include('header_functions.php'); // Il kako se vec zove .... ?>
<?php print_headers(); ?>
</head>
[ balkan7 @ 19.11.2009. 19:09 ] @
Fatal error: Call to undefined function add_to_title() in C:\xampp\htdocs\site\index.php on line 18
morao sam da postavim header.php ispod add_to_head i title i sad radi :)
a kako mogu umesto echo "<title>$page_title</title>"; u headers_functions.php da stavim kod za replace na <title> recimo kao ovo?
Code: if($page_title != $page_title){
$output = preg_replace("#<title>.*</title>#i", "<title>".$page_title."</title>", $output, 1);
}
[ Man-Wolf @ 20.11.2009. 01:26 ] @
Cekaj, meni nije jasno uopste sta ti radis/pokusavas da uradis ? :-) Ti na tim stranicama vec imas neki <title> tag koji hoces da zamenis sa ovim tvojim ?? Pojasni malo bolje sta tacno pokusavas ;)
[ balkan7 @ 20.11.2009. 12:42 ] @
:) E ovako po sto ti nije jasno, kako sto vec imam header.php u njega sam stavio head tagove, e sad recimo da neki CSS ili Javascript code koristim samo u jedan FILE, umesto taj file da se ucitava u sve te stranice zato sam trazio tu fukciju da se ucitava samo u file koju dodam ja, sta se tice title onu fukciju koju si napisao nije bila losa ali to koristim recimo kao na CMS skripte primer, add_to_title("Kontakt"); a prije toga imam Site Title -, a to za title sta sam te pitao mislim da ti je jasno samo sam htio znat dali mogu koristiti metodu sa preg_replace, ali i ovako je Ok :)
Jel sad jasno ili oped nije :-) heheh
Pozzzzzzzzzzz
[ Man-Wolf @ 20.11.2009. 14:00 ] @
Pa iskren da budem i dalje mi nije bas najjasnije
Sto se tice <title></title> to je ok, ako sam dobro skapirao ?
E sad, sto se tice ovog sa include-ovanjem, aj da probam da vidim da li sam dobro razumeo:
Znaci, imas neke JavaScript-e/CSS-ove koje hoces da ucitas samo na odredjenim stranicama? Ako je to slucaj, onda ne znam sta ti ne odgovara u mom kodu ?
Znaci, ti ces u skripti za koju zelis da ima neke dodatne Header Include-ove, da dodas:
Code:
add_to_head(Prvi dodatni tag);
add_to_head(Drugi dodatni tag);
add_to_title(Definisi nastavak Title-a);
I onda u header.php:
Code:
<head>
<script src=....></src> <!-- Prvi tag koji treba da bude na svim stranicama ... -->
<script src=....></src> <!-- Drugi tag koji treba da bude na svim stranicama ... -->
<?php print_headers() ?>
<!-- I pozivom ove funkcije ces da dobijes:
<title>Site Title - (naslov koji si dodao u definisi nastavak title-a u add_to_title() funkciji)</title>
--- Dodatne skripte (ukoliko postoje ....)
-->
Ako je nesto drugo u pitanju, onda bih te zamolio da se malo bolje potrudis i da razdvojis pitanja u vise redova (tipa - jedno pitanje -> jedan red), posto sam malo priglup, pa ne mogu bas najbolje da se snadjem
Pozdrav!
[ dakipro @ 20.11.2009. 14:23 ] @
Aj sad, reci ce neki da solim pamet, ali posto vidim da vec radis neke 'naprednije' stvari sa php-om, tj, barem razmisljas naprednije, o slobodi pozivanja funkcija i izmene sadrzaja, probaj da koristis smarty ili bilo koji drugi template engine, videces da su ovakvi problemi, a i gomila drugih, jednostavno nepotrebni. Samo mi deluje da imas potrebno znanje i nacin razmisljanja da predjes na neki template engine i da samo picis pravu stvar.
Nevezano za temu, izvinjavam se.
[ balkan7 @ 20.11.2009. 15:27 ] @
Man-Wolf - bilo je rec o <title></title>, ali napisao sam ti da i tvoj kod radi (nebitno sad to), sta se tice prvi kod koji sam ti pastirao po sto sam kopirao od CMS i mrzeo me je da pisem funkciju a i mozda ne bi se snaso tako nabolje zato sam jednostavno kopirao.
Na taj CMS sta koristim kod radi ali kad sam proverio na localhost-u samo na jedan file je radio na ostalih ne (cudno).
Hvala na podrsku !
dakipro - hvala ti, mozda cu poceti sa smarty.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|