Seite 1 von 1

CategoryID eines Articles erhalten

Verfasst: Di 10. Feb 2015, 18:47
von impresso
Hallo zusammen,

ich möchte in meinem Modul die Kategorie-ID eines Artikels erhalten, wie klappt das? Mittels der Klasse cArticleCollector erhalte ich meine Artikel vom Typ cApiArticleLanguage. Darin gibt es aber keine Methode um die Kategorie-ID auszulesen. Kann mir hier jemand weiterhelfen?

Vielen Dank & beste Grüße
Tobi

Re: CategoryID eines Articles erhalten

Verfasst: Di 10. Feb 2015, 23:43
von homtata
ich habe noch nicht so ganz verstanden, welchen Weg du bisher eingeschlagen hast, woher du welche Ausgangswerte (z.B. idart oder idartlang) hast... angenommen, die Artikel wurden über cApiArticleLanguage ermittelt, dann kannst du dort jeweils die idart ausgeben lassen. Über cApiCategoryArticleCollection und getCategoryIdsByArticleId($idart) könnte dann u.U. die idcat ermittelbar sein. Ist aber möglicherweise etwas umständlich - so tief bin ich in der Api nicht drin.

Re: CategoryID eines Articles erhalten

Verfasst: Mi 11. Feb 2015, 08:06
von McHubi
Wenn Du die idart hast, kannst Du über die DB-Tabelle con_cat_art die idcatart und idcat auslesen.

Code: Alles auswählen

$query = "SELECT idcat FROM con_cat_art WHERE idart='$idart'";

Re: CategoryID eines Articles erhalten

Verfasst: Mi 11. Feb 2015, 09:02
von Oldperl
Servus,

in CONTENDIO 4.9 ist es inzwischen recht einfach die Kategorie-Id zu ermitteln. Man sollte dazu nicht direkt auf die DB zugreifen (sorry Markus :wink: ), sondern die neue cRegistry-Klasse nutzen.

Code: Alles auswählen

$iIdCat = cRegistry::getCategoryId(); 
Dies liefert die Kategorie-Id für den aktuell genutzten Artikel.

Gruß aus Franken

Ortwin

Re: CategoryID eines Articles erhalten

Verfasst: Mi 11. Feb 2015, 09:34
von homtata
Hallo Ortwin,
kannst du mal ein Anwendungsbeispiel machen? Ich habe das so verstanden, dass z.B. ein Array mit 10 beliebigen idart oder idartlang vorliegt (wie z.B. ein einer Artikelliste), und zu jeder idart die zugehörige idcat ermittelt werden soll. Wie geht das dann mit cRegistry? Ich denke nicht, dass impresso die idcat des AKTUELL aufgerufenen Artikels ermitteln wollte...

Re: CategoryID eines Articles erhalten

Verfasst: Mi 11. Feb 2015, 10:45
von Oldperl
Hallo homtata,

sollte nicht die aktuelle IdCat gemeint sein geht das natürlich nicht. Hier sollte dann die Klasse cApiCategoryArticleCollection() und deren Methode getCategoryIdsByArticleId($idart) helfen. Dieser übergibt man die IdArt und erhält ein Array möglicher IdCats. Normalerweise sollte dieses Array nur einen Eintrag enthalten, den Eintrag der IdCat des Artikels. Bei mehreren Einträgen müsste man dann nochmals über die IdLang (Sprache) unterscheiden bzw. prüfen.
Auch bei mehreren Mandanten müsste man die Abfrage anders machen, da in der Tabelle con_cat_art weder nach Sprachen noch nach Mandant unterschieden wird.
Beispiel:

Code: Alles auswählen

$iIdCat = 0;
$oCatArtColl = new cApiCategoryArticleCollection();
$aIdCats = $oCatArtColl->getCategoryIdsByArticleId($iIdArt);
if(count($aIdCats) == 1) {
    $iIdCat = $aIdCats[0];
}
Hier ist IdCat 0 oder gleich der gefundenen einzige IdCat.

Das gleiche Ergebnis (Array von IdCats) liefert auch die Core-Funktion conGetCategoryAssignments($idart, $db = NULL) in der Datei contenido/includes/functions.con.php. Hier gilt aber die gleiche Einschränkung bezüglich Mandant und Sprachen.

Gruß aus Franken

Ortwin

Re: CategoryID eines Articles erhalten

Verfasst: Mi 11. Feb 2015, 11:52
von impresso
Hey, sorry für die dürftige Info von mir.

Ich benötige die Kategorie-ID des jeweiligen Artikels. Der liegt aber nicht in der aktuellen Kategorie wo das Modul aufgerufen wird. Daher ist der letzte Beitrag sehr hilfreich.

Vielen Dank für die schnelle Community-Hilfe!
Gruß Tobi