2012-10-22 12 views
9

page.php:PHP - header.php सहित पृष्ठ के शीर्षक को कैसे बदला जाए?

<?php 
include("header.php"); 
$title = "TITLE"; 
?> 

header.php:

<title><?php echo $title; ?></title> 

मैं अपने शीर्षक हेडर फाइल को जोड़ने के बाद स्थापित किया जा करना चाहते हैं। क्या इसे करना संभव है? मैं php-संलयन टीवी पर कुछ समान सामान देखा है: http://docs.php-fusion.it/temi:output_handling

+9

जाना बदलने के लिए सबसे अच्छा तरीका होगा में कोड निम्नलिखित जोड़ें अपने प्रोग्राम का तर्क ताकि आप शीर्षक टैग आउटपुट करने से पहले समय में शीर्षक को परिभाषित कर सकें। कामकाज हैं लेकिन वे कट्टर हैं। –

+0

संबंधित: http://stackoverflow.com/questions/2825776/header-how-to-modify-title-of-the-page-on-the-fly – JNF

+2

+1 पेक्का। और "क्लुडी" के लिए "जटिल", "प्रसंस्करण की अपेक्षाकृत उच्च लागत", और "जो भी चीज़ को बनाए रखना है, उसके लिए क्रेज़ी गॉचा" पढ़ें। अपने वास्तुकला को ठीक करें, इसे मत लड़ो। – Quentin

उत्तर

29
Dainis Abols जवाब पर विस्तार

, और उत्पादन से निपटने पर अपने प्रश्न,

निम्नलिखित पर विचार:

अपने header.php शीर्षक टैग <title>%TITLE%</title> करने के लिए सेट किया गया है; "%" महत्वपूर्ण हैं क्योंकि शायद ही कोई भी% TITLE% टाइप करता है ताकि आप इसे str_replace() के बाद उपयोग कर सकें।

तो, तो आप ऐसा

<?php 
    ob_start(); 
    include("header.php"); 
    $buffer=ob_get_contents(); 
    ob_end_clean(); 

    $buffer=str_replace("%TITLE%","NEW TITLE",$buffer); 
    echo $buffer; 
?> 

तरह output buffer उपयोग कर सकते हैं और है कि यह करना चाहिए।

संपादित

मेरा मानना ​​है कि Guy's idea बेहतर काम करता है के बाद से यह करता है, तो आपको ज़रूरत है एक डिफ़ॉल्ट देता है, आईई:

  • शीर्षक अब है <title>Backup Title</title>
  • कोड है:
<?php 
    ob_start(); 
    include("header.php"); 
    $buffer=ob_get_contents(); 
    ob_end_clean(); 

    $title = "page title"; 
    $buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer); 

    echo $buffer; 
?> 
+0

+1। – Peon

+0

धन्यवाद, यही मुझे चाहिए! :) –

+0

इस विधि एसईओ दोस्ताना है ?? –

3

आप जावास्क्रिप्ट

का उपयोग कर सेट कर सकते हैं
<script language="javascript"> 
    document.title = "The new title goes here."; 
</script> 
+1

अच्छा लेकिन इसमें 2 कमीएं हैं। एक एसईओ के लिए उपयोग नहीं है क्योंकि यह कोड हेडर में शीर्षक टैग नहीं लिखता है। दूसरा मेटा विवरण और कीवर्ड कैसे जोड़ना है? –

8

आप क्या कर सकते है, आप की तरह एक चर में उत्पादन की दुकान:

header.php

<?php 
    $output = '<html><title>%TITLE%</title><body>'; 
?> 

पुनश्च: आप को दूर करने के सभी चुनाव आयोग की जरूरत है होस/प्रिंट इत्यादि ताकि सभी संभावित आउटपुट $output चर में संग्रहीत हो।

यह easely हो सकता है किया, फ़ाइल के शुरू में $output = ''; को परिभाषित करते हुए और उसके बाद खोज/$output .= करने के लिएecho बदलें।

और फिर करने के लिए %TITLE% की जगह कि तुम क्या जरूरत है:

<?php 
    include("header.php"); 
    $title = "TITLE"; 

    $output = str_replace('%TITLE%', $title, $output); 
    echo $output; 
?> 

एक और तरीका है, अपने कोड में javascript उपयोग कर रहा है के बजाय:

<title><?php echo $title; ?></title> 

वहाँ में इस रखो:

<script type="text/javascript"> 
    document.title = "<?=$title;?>" 
</script> 

या jQuery, यदि आप चाहें:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(this).attr("title", "<?=$title;?>"); 
    }); 
</script> 
+0

पहला संस्करण काम नहीं कर रहा है। और फिर, यदि मैं जेएस का उपयोग करता हूं, पेज शीर्षक बदलता है, लेकिन यदि आप स्रोत कोड देखते हैं तो मुझे यह नहीं चाहिए कि मुझे –

+0

अच्छी तरह से चाहिए, वास्तव में, पहला संस्करण काम करता है, लेकिन यह शीर्षलेख क्षेत्र के बाहर पृष्ठ शीर्षक रखता है, क्योंकि गूंज नहीं जाता है header.php पृष्ठ –

+0

आपको ** सभी ** echos को header.php में निकालना होगा और '$ आउटपुट लिखना होगा। = 'जहां भी आपके पास' echo' है। यह स्क्रिप्ट का विचार है। – Peon

2

शीर्ष पर यह कोड जोड़ें अपने पृष्ठ

<?php 
    $title="This is the new page title"; 
?> 

अपने टेम्पलेट हेडर फाइल पर यह कोड जोड़ें (शामिल)

<title><?php echo $title; ?></title> 
+0

zkanoca मैं बस कहना चाहता हूं कि यह समाधान शानदार है! –

+0

आसान। उत्तम! धन्यवाद! – Brian

5

we.mamat के जवाब पर एक छोटे से विस्तार, आप सरल प्रतिस्थापन के बजाय preg_replace का उपयोग कर सकते हैं और % शीर्षक% की आवश्यकता को पूरी तरह से हटा सकते हैं। कुछ ऐसा:

<?php 
ob_start(); 
include("header.php"); 
$buffer=ob_get_contents(); 
ob_end_clean(); 

$title = "page title"; 
$buffer = preg_replace('/(<title>)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer); 

echo $buffer; 
?> 
1

यह बहुत आसान है। फिर header.php

 <? 
$sitename = 'Your Site Name' 
$pagetitle; 

if(isset($pagetitle)){ 
echo "<title>$pagetitle." | ". $sitename</title>"; 
} 
    else { 
echo "<title>$sitename</title>"; 
} 
?> 

में इस कोड डाल डाल पेज में:

<? 
    $pagetitle = 'Sign up' 
    include "header.php"; 
    ?> 

तो अगर आप index.php पर हैं, शीर्षक आपकी साइट का नाम है। और उदाहरण के लिए यदि आप साइन अप पेज पर हैं, तो शीर्षक साइन अप है। आपकी साइट का नाम

0

उपयोग इस तरह एक jQuery समारोह:

$("title").html('your title');

1

हर सरल सिर्फ एक समारोह का उपयोग कर, मैं इसे बनाया।

<? 
function change_meta_tags($title,$description,$keywords){ 
     // This function made by Jamil Hammash 
    $output = ob_get_contents(); 
    if (ob_get_length() > 0) { ob_end_clean(); } 
    $patterns = array("/<title>(.*?)<\/title>/","<meta name='description' content='(.*)'>","<meta name='keywords' content='(.*)'>"); 
    $replacements = array("<title>$title</title>","meta name='description' content='$description'","meta name='keywords' content='$keywords'"); 

    $output = preg_replace($patterns, $replacements,$output); 
    echo $output; 
} 
?> 

तुम सब function.php फ़ाइल बनाएँ और इस समारोह के अंदर डाल दिया जाना चाहिए सबसे पहले, तो बनाने के header.php में मेटाटैग के तहत की आवश्यकता है। इस फ़ंक्शन का उपयोग करने के लिए change_meta_tags ("नया शीर्षक", "नया वर्णन", नया कीवर्ड); । हेडर.एफपी में इस फ़ंक्शन का उपयोग न करें !! बस एक और पेज के साथ।

+0

बस सुनिश्चित करें कि आप सही अनुक्रम पहला शीर्षक, वर्णन, कीवर्ड रखें। अन्यथा यह फ़ंक्शन काम नहीं करेगा, दूसरे विवरण और कीवर्ड के लिए एकल उद्धरण का उपयोग करें। और हाँ वास्तव में बहुत आसान काम है –

1

1. सीधे शब्दों में जोड़ने $ शीर्षक चर से पहले समारोह की आवश्यकता होती है

<?php 

$title = "Your title goes here"; 
require("header.php"); 

?> 

2. header.php

<title><?php echo $title; ?></title> 
संबंधित मुद्दे