2012-06-08 8 views
5

मैं सिम्फनी 1.0.6 का उपयोग कर रहा हूं।कैनोनिकल टैग को उसी लिंक से प्राप्त किए गए पृष्ठों को कैसे जोड़ना है?

मेरी साइट में मेरे पास दो यूआरएल हैं।

http://newe4s.com/news/articles/view/033/job-news-and-information 

और

http://newe4s.com/news/articles/view/033/job-news-and-information/graduate/Connections-help-graduates-get-jobs 

अब, सभी नए लेख एक ही लेआउट का उपयोग कर रहे हैं और दोनों ऊपर दिए गए लिंक डेटाबेस से एक ही डेटा मिलता है। Google सामग्री की नकल की रिपोर्ट कर रहा है क्योंकि इसे एक ही सामग्री के लिए एकाधिक यूआरएल मिल रहे हैं। जब मैं एक समाधान के लिए खोज की है, मुझे मिल गया है कि का उपयोग कर "प्रामाणिक" संरचना इस मुद्दे जो की आवश्यकता होती है

<link rel="canonical" href="http://newe4s.com/news/articles/view/033/job-news-and-information /> 

यहाँ पेज

http://newe4s.com/news/articles/view/033/job-news-and-information/graduate/Connections-help-graduates-get-jobs 

के सिर अनुभाग लेकिन समस्या का जोड़ा जाना आवश्यक है, दोनों कर रहे हैं ठीक करता है उसी लेआउट का उपयोग करके और आलेख आईडी (उपरोक्त उदाहरण में 033) के आधार पर, डेटा लाया और प्रदर्शित किया जाता है। मैं बदल नहीं सकता या हार्ड कोड कैननिकल href नहीं कर सकता।

क्या action.class या टेम्पलेट फ़ाइल में मैन्युअल रूप से लिंक टैग जोड़ने का कोई तरीका है?

उत्तर

2

an old ticket के अनुसार (एक old thread in the old symfony forum के आधार पर) - जो बिंदु to the final source, आप esaily एक सहायक (उदाहरण /lib/helper/CanonicalHelper.php के लिए) अपने पृष्ठ पर एक लिंक टैग को जोड़ने बना सकते हैं:

/** 
* Add link tag to slot 'links' 
* 
* @param String $href [Absolute or internat URI] 
* @param String $rel [value for 'rel' attribtue, e.g. 'canonical'] 
* 
* @return void 
*/ 
function add_link($href, $rel) 
{ 
    $slot = get_slot('links'); 

    try { 
    $href = url_for($href, true); 
    $slot .= "\n<link rel=\"$rel\" href=\"$href\" />"; 
    } catch (InvalidArgumentException $e) { 
    $slot .= "\n<!-- Could not add Link '$href': Only absolute or internal URIs allowed -->"; 
    } 

    slot('links', $slot); 
} 

तो फिर तुम यह कॉल कर सकते हैं अपने खाके में:

<?php add_link(
    'http://newe4s.com/news/articles/view/033/job-news-and-information', 
    'canonical' 
); ?> 

अंत में, अपने layout.php में स्लॉट जोड़ने के लिए भूल नहीं है:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <title>Title</title> 
    <link rel="shortcut icon" href="/favicon.ico" /> 
    <?php include_javascripts() ?> 
    <?php include_stylesheets() ?> 
    <?php include_slot('links'); ?> 
    </head> 

यदि आप इसे actions से जोड़ना चाहते हैं, तो यह ब्लॉग पोस्ट में भी परिभाषित किया गया है।

संपादित करें:

आप एक सहायक CanonicalHelper.php बुलाया भूल यह शामिल नहीं करना है जब आप add_link समारोह का उपयोग करना चाहते बनाते हैं:

<?php use_helper('Canonical') ?> 
+0

हाय ob_start को सौंपा जाएगा में जो कुछ भी प्रिंट मैं/lib के तहत एक सहायक बनाया है है/symfony/सहायक के रूप में CanonicaHelper.php और मैंने कोड को चिपकाया है जिसमें add_link है। फिर टेम्पलेट में मैंने add_link() फ़ंक्शन को जोड़ा और layout.php में include_slot ('link') जोड़ा गया। क्या मुझे include_slot ('link') का नाम बदलना चाहिए_slot ('Canonical') .... मैंने दोनों तरीकों से प्रयास किया। यह –

+1

wortking नहीं है मैंने अपना जवाब संपादित किया है (आपको 'use_helper' का उपयोग करने की आवश्यकता है) – j0k

+0

हाय मैं टिप्पणी कोड में अपना कोड ठीक से पोस्ट नहीं कर सका। तो मैंने अपने प्रश्न का उत्तर दिया। अगर यह सही है तो कृपया मुझे बताएं। –

0

हाय मैं नीचे के रूप में कर रहा हूँ और कृपया मुझे पता है अगर मैं सही या गलत हूँ।

/lib/symfony/CanonicalHelper.php

<?php 
function add_link($href, $rel) 
{ 
$slot = get_slot('links'); 
try { 
    $href = url_for($href, true); 
    $slot.= "\n<link rel=\"$rel\" href=\"$href\" />"; 
} 
catch (InvalidArgumentException $e) { 
$slot.= "\n<!-- Could not add Link '$href': Only absolute or internal URIs allowed -->"; 
} 
return $slot; 
} 
?> 

में

layout.php में:

<?php include_slot('links'); ?> 

सफलता फ़ाइल में:

<?php use_helper('Canonical');?> 
<?php echo add_link('nonsense', 'canonical');?> 
+0

आप सहायक फ़ोल्डर को गलत फ़ोल्डर में डालते हैं। '/ Lib/helper /' में CanonicalHelper.php फ़ाइल को ले जाएं (यदि फ़ोल्डर सहायक मौजूद नहीं है)। – j0k

+0

मुझे बहुत खेद है .. यह गलती टाइप कर रहा था .. :) यह केवल सहायक निर्देशिका में है। इसके अलावा हर कोई ठीक लगता है .. बहुत धन्यवाद ... :) –

+0

हे ... मुझे बहुत खेद है .. मैं हमेशा आपके लिए धन्यवाद देता हूं आदमी ... मैंने अभी अपना जवाब स्वीकार कर लिया है और यह आपकी वरीयता को हटा दिया है .. मुझे दोबारा खेद है .. मैं आपका जवाब स्वीकार करता हूं .. –

1

Symfony 1.0।11

महत्वपूर्ण हिस्सा स्लॉट ('लिंक') & end_slot() इतना के बीच इसी तरह स्लॉट & ob_end()

function add_link($href, $rel) 
    { 
     slot('links'); 
     echo "\n<link rel=\"$rel\" href=\"$href\" />\n"; 
     end_slot(); 
    } 
संबंधित मुद्दे