Wie Parent-, parent-, parent-, current-ID ausgeben?
- flipper
- Erledigt
-
-
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(?).
Außerdem kommt es auf den View an, ob $id dann z.B. eine Artikel-ID ist oder eine Kategorien-ID.
Code
Alles anzeigen$app = JFactory::getApplication(); $view = $app->input->getCmd('view', ''); if ($view === 'article') { $catid = $app->input->getInt('catid'); $articleId = $app->input->getInt('id'); } elseif (in_array($view, ['category', 'categories'])) { $catid = $app->input->getInt('id'); }
Und das verstehe ich nicht
Wie aber
Parent- und current-IDoder
Parent-, parent-, current-IDoder
Parent-, parent-, parent-, current-ID
ausgeben?In welchem Kontext, z.B.?
-
Ich rate mal dass der Pfad einer Kategorie gemeint ist: ->getPath($categoryId);
-
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-cmsHome of the Joomla! Content Management System. Contribute to joomla/joomla-cms development by creating an account on GitHub.github.comjoomla-cms/parent_category.php at 4.1.4 · joomla/joomla-cmsHome of the Joomla! Content Management System. Contribute to joomla/joomla-cms development by creating an account on GitHub.github.comBei Parent von Parent wirds allerdings "komplizierter". So was oder ähnlich in der Art meint wohl firstlady, wenn es dir nur um die IDs geht
PHP
Alles anzeigen<?php defined('_JEXEC') or die; use Joomla\CMS\Categories\Categories; // ID der Kategorie $catid = 84; // Alle Com_Content-Kategorien $categories = Categories::getInstance('Content'); // Aktuelle Kategorie: $category = $categories->get((int) $catid); $category->getPath();
Das gibt dann ein Array der Art:
-
@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
Danach setzt du
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
-
-
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.
-
Nachtrag: Flexheader3 ist ein klasse Modul, die Möglichkeiten schaffen Ordnung:
itemid prefix: itemid
parentid prefix: parent
parentcategoryid prefix: parentcategory
-
wenn ich es richtig verstehe, willst du was bauen, was dir die Aufgabe abnimmt Bilder einem bestimmten Namen zu geben, wie z.B. category8.jpg wo 8 die Kategorie ID ist...
-
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_flexheader3Flexheader - flexible header for Joomla! Contribute to ahotzler/mod_flexheader3 development by creating an account on GitHub.github.comUnd 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:
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.
-
Danke. Es passt wie von flexheader3 angeboten. Ich muss in die von dir beschriebene Lösung zu einem späteren Zeitpunkt eintauchen. Bin zu einfach gestrickt.