Yii Framework Forum: Meta Tag hinzufügen - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Meta Tag hinzufügen SEO Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 24 October 2009 - 08:38 AM

Hallo,
ich möchte bestimmte Seiten von Google ausschließen. Um das zurealisieren, muss ich folgendes in meinen <head></head> Bereich schreiben

<meta name="robots" content="noindex">



Wo liegt das Problem?
Das Problem nun da, dass ich nicht weiß wie ich in mein Layout diesen Schnippsel rein schreibe.

Schließlich läuft doch die Layout Ausgabe folgendermaßen ab
  • Layout ausgeben
  • render() - aufrufen
  • Fertig


tja, wie kriege ich das nun hin?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Y!! 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 978
  • Joined: 18-June 09

Posted 24 October 2009 - 09:38 AM

Einfügen kannst du den Tag hiermit: http://www.yiiframew...rMetaTag-detail

Müsste dann ungefähr so aussehen:

Yii::app()->clientScript->registerMetaTag('noindex', 'robots');


Ich würde das dann so lösen:

<?php

// Hauptcontroller

class BaseController extends CController
{

  public $pageNoIndex;

  public function init()
  {
    $this->addClientScripts();
  }

  public function addClientScripts()
  {

    if (true === $this->pageNoIndex)
    {
      Yii::app()->clientScript->registerMetaTag('noindex', 'robots');
    }

  }

}

?>


Wenn nun ein Controller (also eine bestimmte Seite) den MetaTag haben soll, machst du einfach:

<?php

class TestController extends BaseController
{

  public $pageNoIndex = true;

  // .......

}

?>


Vielleicht willst du den MetaTag ja auch per Controller-Action setzen, dann wäre eine andere Lösung natürlich sinnvoller da du hier nur global je Controller setzen kannst.
0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 24 October 2009 - 09:56 AM

nur mal so zum verständnis.
Warum werden Variablen in den Klassen bei yii immer public deklariert. Aus Java weiß ich, das Variablen stehts Private deklariert werden und dazu passende Getter und Setter Methoden erstellt werden.


Zu deiner Lösung
D.h. ich leite jeden Controller von einem "Vor-Controller" ab, den dann wiederrum von CController ableitet. Ich glaube, dass das Symfony - Framework genau soarbeitet, für den Fall, dass man Methoden deklarieren will die für alle Controller verfügbar sein sollen.


Fehler
Den BaseController habe ich in protected/controllers/BaseController.php definiert

Folgenden Fehler kriege ich nun zurück
Fatal error: Class 'BaseController' not found in E:\Workspace\blog2\protected\controllers\EngineController.php on line 3

Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   Y!! 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 978
  • Joined: 18-June 09

Posted 24 October 2009 - 11:46 AM

View Postyii, on 24 October 2009 - 09:56 AM, said:

Zu deiner Lösung
D.h. ich leite jeden Controller von einem "Vor-Controller" ab, den dann wiederrum von CController ableitet. Ich glaube, dass das Symfony - Framework genau soarbeitet, für den Fall, dass man Methoden deklarieren will die für alle Controller verfügbar sein sollen.


Ja so funktioniert das. In einem Projekt habe ich z.B. 2 Controller die vor dem eigentlichen Controller kommen. Ein Hauptcontroller mit dem ich $this->forceSuffix usw. machen kann und dann für bestimmte Bereiche (z.B. Admin-Panel) noch einen weiteren Controller mit dem ich dann automatisch auf https umleite und sowas halt.

Haupt-Controller -> Bereichs/Context-Controller -> Controller

View Postyii, on 24 October 2009 - 09:56 AM, said:

Fehler
Den BaseController habe ich in protected/controllers/BaseController.php definiert

Folgenden Fehler kriege ich nun zurück
Fatal error: Class 'BaseController' not found in E:\Workspace\blog2\protected\controllers\EngineController.php on line 3



Der BaseController muss in den components Ordner. Ich erstelle da immer einen extra Ordner "controllers" um mehr Struktur reinzubringen.

- protected
  - components
    - controllers
      - BaseController.php


In der config müsstest du dann glaube ich noch einen import Eintrag für diesen Ordner hinzufügen (application.components.controllers.*).
0

#5 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 25 October 2009 - 06:24 AM

View Postyii, on 24 October 2009 - 09:56 AM, said:

nur mal so zum verständnis.
Warum werden Variablen in den Klassen bei yii immer public deklariert. Aus Java weiß ich, das Variablen stehts Private deklariert werden und dazu passende Getter und Setter Methoden erstellt werden.


Das ist einfach Konvention. Prado hat das z.B. auch so gemacht, dass man immer getter/setter schreiben musste, die dann den eigentlich Wert in einer privaten Variable gespeichert/aus ihr gelesen haben. Das verursacht mehr Schreibarbeit und ist für viele Parameter einfach nicht nötig. Yii möchte es ja einfach halten.

Und wenn doch mal getter/setter nötig sind, um z.B. einen Wert beim Beschreiben noch zu prüfen, kann man ja welche schreiben. Für den "Anwender" der Klasse spielt das keine Rolle, da dank CComponent (definiert __get(),__set(),...) transparent auf Klasseneigenschaften zugegriffen werden kann, ohne zu merken, ob man einen getter verwendet oder eine öffentliche Variable direkt ausliest.
0

#6 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 25 October 2009 - 05:40 PM

View PostY!!, on 24 October 2009 - 11:46 AM, said:

Ja so funktioniert das. In einem Projekt habe ich z.B. 2 Controller die vor dem eigentlichen Controller kommen. Ein Hauptcontroller mit dem ich $this->forceSuffix usw. machen kann und dann für bestimmte Bereiche (z.B. Admin-Panel) noch einen weiteren Controller mit dem ich dann automatisch auf https umleite und sowas halt.


Warum löst du diese Aufgabe nicht mit mod_rewrite?
Das wäre doch Performance-technisch schneller und leichter zu programmieren.
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#7 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 140
  • Joined: 14-May 09

Posted 30 October 2009 - 08:53 AM

View Postyii, on 25 October 2009 - 05:40 PM, said:

Warum löst du diese Aufgabe nicht mit mod_rewrite?
Das wäre doch Performance-technisch schneller und leichter zu programmieren.


Ist nicht immer sinnvoll.
Beispielsweise wenn man nicht Apache als Webserver benutzt, oder die Applikation auch auf anderen Webservern laufen soll. (Oder mod_rewrite nicht aktiviert ist)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users