CategoryID eines Articles erhalten

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
impresso
Beiträge: 3
Registriert: Mi 15. Okt 2014, 17:48
Kontaktdaten:

CategoryID eines Articles erhalten

Beitrag von impresso » Di 10. Feb 2015, 18:47

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

homtata
Beiträge: 1010
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von homtata » Di 10. Feb 2015, 23:43

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.

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von McHubi » Mi 11. Feb 2015, 08:06

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'";
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Oldperl
Beiträge: 4010
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von Oldperl » Mi 11. Feb 2015, 09:02

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
*NEU* PHP 7.x Community Draft von CONTENIDO 4.9 auf github
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

homtata
Beiträge: 1010
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von homtata » Mi 11. Feb 2015, 09:34

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...

Oldperl
Beiträge: 4010
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von Oldperl » Mi 11. Feb 2015, 10:45

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
Zuletzt geändert von Oldperl am Mi 11. Feb 2015, 12:55, insgesamt 1-mal geändert.
*NEU* PHP 7.x Community Draft von CONTENIDO 4.9 auf github
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

impresso
Beiträge: 3
Registriert: Mi 15. Okt 2014, 17:48
Kontaktdaten:

Re: CategoryID eines Articles erhalten

Beitrag von impresso » Mi 11. Feb 2015, 11:52

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

Antworten