Wie ​Parent-, parent-, parent-, current-ID ​ausgeben?

  • Hallo
    Hauptkategorie ausgeben klappt:

    PHP
    <?php
    $catid = JRequest::getInt('id');
    echo $catid;
    ?>

    Wie aber
    Parent- und current-ID

    oder
    Parent-, parent-, current-ID

    oder
    Parent-, parent-, parent-, current-ID
    ausgeben?

    Ich stehe auf dem Schlauch. Hilfe erbeten.
    Danke herzlich, Flipper (Joomla4)

  • Zitat

    Danke herzlich, Flipper (Joomla4).

    Nur so viel:

    Unter Joomla 4 wurde JRequest abgeschafft. Das ist was aus Joomla 2.5 und früher und funktioniert mit einer Deprecated-Meldung wohl auch unter Joomla 3 noch(?).

    Code
    $app = JFactory::getApplication();
    $id = $app->getInput()->get('id');

    Außerdem kommt es auf den View an, ob $id dann z.B. eine Artikel-ID ist oder eine Kategorien-ID.


    Und das verstehe ich nicht ;)

    Wie aber
    Parent- und current-ID

    oder
    Parent-, parent-, current-ID

    oder
    Parent-, parent-, parent-, current-ID
    ausgeben?

    In welchem Kontext, z.B.?

  • Danke beiden. Ich habe befürchtet, dass schon die Frage zu stellen schwierig wird. Welche view gemeint ist, soll das Script selber herausfinden.
    Zur hauptsache habe ich Unterunterkategorieblogs, da möchte ich die Kategorie, Unterkategorie und Unterunterkategorie ausgeben sowie nach Klick auf den Beitrag ebenso die Kategorie, Unterkategorie und Unterunterkategorie ausgeben können.

  • Welche view gemeint ist, soll das Script selber herausfinden.

    Steht ja oben.


    Und, wenns um Beiträge geht, egal, ob im Blog oder in Einzelansicht, hat das item-Objekt des Beitrags ja sowieso schon die Kategorie und Parentkategorie entschlüsselt dabei


    In einer Einzelansicht in $this->item z.B.

    Code
    [parent_title]
    [parent_id] 
    [parent_route]
    [parent_alias]
    [parent_slug]
    
    [catid]
    [category_title]
    [category_alias]
    [catslug]

    Und eigentlich hat Joomla doch schon was dabei, diese beiden via Backend-Einstellungen auzugeben. Die JLayouts:


    Joomla 4:

    joomla-cms/category.php at 4.1.4 · joomla/joomla-cms
    Home of the Joomla! Content Management System. Contribute to joomla/joomla-cms development by creating an account on GitHub.
    github.com

    joomla-cms/parent_category.php at 4.1.4 · joomla/joomla-cms
    Home of the Joomla! Content Management System. Contribute to joomla/joomla-cms development by creating an account on GitHub.
    github.com


    Bei Parent von Parent wirds allerdings "komplizierter". So was oder ähnlich in der Art meint wohl firstlady, wenn es dir nur um die IDs geht


    Das gibt dann ein Array der Art:

    Code
    Array
    (
        [3] => 3:blubber
        [14] => 14:hallo
        [89] => 89:schnipsel
        [84] => 84:joomla-snippets
    )
  • @relater: Danke. Achso, die Frage zielt woanders hin, danke vielmal.


    Nach langem Grübeln über deinem Script in Posting #2: Ich befürchte, es bleibt mir zu hoch gegriffen, diese scheinbar schlichte Aufgabe lösen zu können und die im Posting #5 auf dem Serviertablett angebotene Lösung umzusetzen. Das Srcipt gibt aus: use Joomla\CMS\Categories\Categories;
    Muss es wohl. Ich erfasse es leider nicht.

    Auch ohne Subkategorie: Gibt es ein Script, welches Artikel und Kategorie gleichzeitig ausgibt?

    Herzlich, flipper

  • Das Srcipt gibt aus: use Joomla\CMS\Categories\Categories;

    Du hast einen PHP-Datei. in der dein Code läuft.


    Diese beginnen in Joomla im Normalfall mit

    PHP
    <?php
    defined('_JEXEC') or die;

    Danach setzt du

    Code
    use Joomla\CMS\Categories\Categories;

    und dann kannst du den weiteren Code sonstwo(!) in der Datei nutzen.

    Natürlich nur dort, wo auch anderes PHP läuft.


    Das funktioniert unter Joomla 3 und 4.


    OOOODER:

    Du lässt das use-Dingens weg und verwendest stattdessen

    Code
    // Alle Com_Content-Kategorien
    $categories = \Joomla\CMS\Categories\Categories::getInstance('Content');
  • Ich habe bei einem Projekt vor 15 Jahren das PlugIn Flexheader3 eingesetzt. Heute habe ich den Plan, das PlugIn selber zu bauen, um zu umgehen, unzählige categorie_xy.jpg und article_xy.jpg Dateien ablegen zu müssen.

  • Gut zusammengefasst, ja. Mit dem Modul bietet sich auch an, mit Klassen zu arbeiten, was ermöglicht, verschiedene Klassen mit einer Bilddatei zu verknüpfen:

    flexheader3 CSS Class:
    CSS Class of Image, Flash or DIV Area. Use this if your module is included in RAW mode without Module Class Suffix

  • Flexheader3 ermittelt diverse denkbare Bildnamen aus Prefixen, die man im Modul festlegen kann sowie den jeweils ermittelten IDs (menu, category, parentcategory) je nach Komponenten-Kontext.


    Abschließend durchläuft es eine Hierarchie, welches Bild anzuzeigen ist.


    mod_flexheader3/mod_flexheader3.php at 2.4.2 · ahotzler/mod_flexheader3
    Flexheader - flexible header for Joomla! Contribute to ahotzler/mod_flexheader3 development by creating an account on GitHub.
    github.com


    Und da soll jetzt eben noch ein oder mehrere, weiterer Level rein (quasi Fallbacks), "Wenn kein Bild zur Kategorie oder Parent-Kategorie, dann nehme das Bild der Parant-Parent-Kategorie."


    Letztlich ist der Ansatz von firstlady oben aber schon richtig, den Kategorie- und/oder Menü-Path zu ermitteln und halt noch mehr if in die oben verlinkte Stelle (und davor) einzubauen. Zumindest, wenn man als Grundlage den aktuellen Flexheader3-Code nimmt. (Das läuft ja auch unter Joomla 4).

  • Danke, ich habe mir das schon angeschaut / nicht überlesen. Stecke aber nach wie vor fest (Posting #6). Menu-Path irritiert mich. Hm... Versuch macht klug. die Ausgabe von getPath($categoryId) gelingt mir nicht, um diese weiter zu verwenden.

  • Die ausgabe meines getPath-Codes oben:

    Code
    Array
    (
        [3] => 3:blubber
        [14] => 14:hallo
        [89] => 89:schnipsel
        [84] => 84:joomla-snippets
    )

    bedeutet:

    Ich befinde mich aktuell in Kategorie 84. Die habe ich dem Code als $catid = 84; hartkodiert mitgegeben. Du ermittelst die natürlich vorher auf Standardweg.

    Und getPath sagt dir dann von unten nach oben:


    - Deren Parent ist Kategorie 89.

    - - Deren Parent ist Kategorie 14.

    - - - Deren Parent ist Kategorie 3.


    Ähnliches kann man halt auch mit Menü-IDs machen. Da weiß ich den Code aber nicht auswendig.