+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Name der Kategorie in PHP-Variable speichern?

  1. #1
    Neu an Board Avatar von Mazl
    Registriert seit
    01.06.2010
    Beiträge
    58
    Bedankte sich
    12
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Name der Kategorie in PHP-Variable speichern?

    Guten Tag,

    gibt es eine Möglichkeit den Namen der Kategorie, des aktuellen Beitrags, in eine PHP-Variable zu speichern?

    Ich habe das gleiche schon einmal mit der Sprache gemacht, die kann ich mit mit dem folgenden Code abspeichern:
    PHP-Code:
    <?php $lang JFactory::getLanguage();
    $site_lang $lang->getName(); ?>
    Geht das auch mit der Kategorie?

    Liebe Grüße.

  2. #2
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.628
    Bedankte sich
    83
    Erhielt 539 Danksagungen
    in 438 Beiträgen

    Standard

    Hallo,
    das geht schon irgendwie, ist aber davon abhängig, wo denn dein PHP-Code laufen soll.
    Im Template, einem Modul, einem Plugin... ?
    Pauschal gesagt, solltest du ihn über das aktuelle Menüobjekt finden:
    PHP-Code:
    $jmenu  JMenu::getInstance('site');
    $menuItem $jmenu->getActive(); 
    in $menuItem findest du dann viele spannende Eigenschaften und evtl. auch den Kategorienamen.

    CirTap
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


  3. #3
    Neu an Board Avatar von Mazl
    Registriert seit
    01.06.2010
    Beiträge
    58
    Bedankte sich
    12
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Zitat Zitat von CirTap Beitrag anzeigen
    Hallo,
    das geht schon irgendwie, ist aber davon abhängig, wo denn dein PHP-Code laufen soll.
    Im Template, einem Modul, einem Plugin... ?
    Pauschal gesagt, solltest du ihn über das aktuelle Menüobjekt finden:
    PHP-Code:
    $jmenu  JMenu::getInstance('site');
    $menuItem $jmenu->getActive(); 
    in $menuItem findest du dann viele spannende Eigenschaften und evtl. auch den Kategorienamen.

    CirTap
    Hallo CirTap,

    der Code soll im Template laufen, ich möchte abhängig von der Kategorie einige Sachen im Template anzeigen lassen!

  4. #4
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.628
    Bedankte sich
    83
    Erhielt 539 Danksagungen
    in 438 Beiträgen

    Standard

    Hallo,
    zuerst mal zum JMenu: im Template liefert dir das (aktive) Menü nur dann sinnreiche Daten, wenn die aktive Ansicht auch eine Bereichs- oder Kategorie-Ansicht ist. Dann entsprechen in der bereits genannten/erstellten Variablen $jmenu die Eigenschaften id, name und alias dem was man erwartet.
    Auf das Menü-Objekte kannst du in allen Template-Dateien, also auch Overrides, wie gezeigt zugreifen, da es vom globalen Application-Objekt zu bekommen ist.
    Meinereiner verwendet gerne des $alias, um ihn pauschal als Class-Name ins HTML zu packen, so kann ich per CSS auch sehr präzisie rumstylen anstatt mit dem hirntoten "class-Zusatz der Seite" (pageclass sfx) aus dem Backend sämtliche CSS-Regeln zu verkorksen.
    Aber egal...

    Um aus dem Artikel diese Daten herauszufischen "muß" dein PHP-Code in das entsprechende Override-Template rein, denn nur dort hast du kostenfreien, direkten Zugriff auf dessen Daten. Mit kostenfrei meine ich keine zusätzlichen Datenbankabfragen, die im Template-Code sowieso nichts zu suchen haben: dafür wäre dann in der Tat ein Plugin oder Modul besser geeignet, s.u.

    Im Override "/dein-template/html/com_content/article/default.php" wäre $this der aktive Artikel und $this->section oder $this->category eben jene.

    Idealerweise packt man in Template-Code tatsächlich nur solche Dinge rein, die man landläufig "Anzeige-Logik" (display logic) nennt und keine "Geschäfts-Logik" (business logic), also nur solchen (PHP-)Code der mit den Daten arbeitet, die ohnehin da sind und danach entscheidet welcher HTML-Code dazu am sinnvollsten generiert wird.
    Auch deshalb gibt es ja die Overrides, um sich die Ausgabe anpassen zu können.

    Wenn du aber Daten aus einer externen Quelle (DB, Datei, Web-Service) einbinden willst, ist hier ein Plugin oder Modul der stilvollere und deutlich bessere Weg: zum einen sind die "näher am Kern" dran (Plugins) und können auch auf die Daten der aktiven Komponente (z.B. Content-Plugins) zugreifen und Module haben dann den Vorteil, dass die ihrerseits Templates nutzen können.

    Für die (nativen) Komponenten gibt es zahlreiche "Events" in die man sich per Plugin einklinken kann, um die durchgereichten Objekte (z.B. Artikel, Kategorie, Kontakt) zu verwursten.
    Ein durchgängiges Event-System gibt es allerdings nicht, d.h. man muß etwas im Code buddeln um herauszufinden welche Ereignisse es überhaupt gibt und welche davon sinnvoll sind. Auf http://docs.joomla.org/Category:Plugins gibt es weitere Infos.

    Viel Spaß,
    CirTap
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein