2013-02-19 17 views
5

Wiem, że mogę zarejestrować nowy znacznik meta w Yii i wiem, jak to zrobić, ale muszęJak zamienić metatag w Yii?

zastąpić domyślny tag, który ustawiłem, ponieważ gdy jestem na artykule, chcę wstaw krótki opis artykułu do metatagu;

Jak mogę zarządzać metatagami?

Odpowiedz

9

Jeśli używasz najnowszej wersji, możesz nadać identyfikatorowi metatag.

->registerMetaTag('example', 'description', null, array(), 'mytagid'); 

Wywołanie rejestruMetaTag z tym samym identyfikatorem spowoduje jego zastąpienie.

http://www.yiiframework.com/doc/api/1.1/CClientScript#registerMetaTag-detail

+0

Mam już metatag opisu; chcę zastąpić treść opisu; –

+0

Moja odpowiedź powyżej to zrobi. Użycie id pozwoli ci nadpisać istniejący opis. – Alex

+0

Testowałem i już to nie działa; propozycje? –

7

Można ustawić Meta tag na stronie za pomocą:

Yii::app()->clientScript->registerMetaTag("This is my meta description", 'description'); 
Yii::app()->clientScript->registerMetaTag("These, are, my, keywords", 'keywords'); 

ten może być ustawiony w sterowniku lub widoku, a oczywiście w zależności od sposobu odpytywanie swoich artykułów, można sprawić, że część zawartości dynamiczny jak tak (zakładając $model jest Twój wybrany artykuł i meta_description to atrybut modelu przechowywania meta opis):

Yii::app()->clientScript->registerMetaTag($model->meta_description, 'description'); 

Dokumentacja na Yii site can be found here

+0

Mam już metatag opisu; chcę zastąpić treść opisu; –

+1

Co masz na myśli przez zastąpienie? Zastąpić po załadowaniu strony? Widzę, że przyjąłeś odpowiedź, po prostu pytasz z ciekawości :) –

+0

tak, zamień zawartość domyślnego metatagu na nową treść –

2

Można spróbować to:

1) 'components/Controller.php':

public $metaDescription; 
public $metaKeywords; 

public function getMetaDescription() { 
    if(!$this->metaDescription) 
     return Yii::app()->settings->getValue('meta_description'); //return default description 
    return $this->metaDescription; 
} 

public function getMetaKeywords() { 
    if(!$this->metaKeywords) 
     return Yii::app()->settings->getValue('meta_keywords'); //return default keywords 
    return $this->metaKeywords; 
} 

2) w układzie main.php:

... 
Yii::app()->clientScript->registerMetaTag($this->getMetaDescription(), 'description'); 
Yii::app()->clientScript->registerMetaTag($this->getMetaKeywords(), 'keywords'); 
... 

3) W twoich innych układów:

... 
// If you don't do that, the description and keywords will be default for this page. 
$this->metaDescription = 'Your description here'; 
$this->metaKeywords = 'your, keywords, here'; 
... 

nocie, że Yii :: app() -> Ustawienia-> getValue ('meta_description') oraz Yii :: app() -> Ustawienia-> getValue ("meta_keywords") to moje domyślne wartości, które bierze od DB.

+0

Dobrze, to jest rozwiązanie, które zadziałało dla mnie. – Skatox