[TYPO3-german] CategoryCollection

Peter Linzenkirchner liste at lisardo.de
Thu Jul 14 22:59:35 CEST 2016


Hallo Dieter, 

ich will mich in die Handhabung der sys_categorys besser einarbeiten. Es gibt hier ja einen schönen API-Eintrag: 
https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html
und speziell den Abschnitt über die category collections meine ich: 
https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html#category-collections

Der obere Bereich von dem Beispiel: 
$collection = \TYPO3\CMS\Frontend\Category\Collection\CategoryCollection::load(
 $aCategory,
 TRUE,
 $table,
 $relationField
);
wenn man für $aCategory eine Kategorie-ID einsetzt und für $table sowie $relationField seine Tabelle + das Referenzfeld für die Kategorien, dann werden alle Datensätze mit der Kategorie als Objekt zurückgeliefert. (Ich spreche von einem Repository in Extbase). Ich habe mir auch die Klasse schon angesehen, aber ich werde nicht wirklich schlau daraus, wie man hier mehrere Kategorien ansprechen kann … und vor allem sicherstellen, dass sie sortiert sind und kein Datensatz doppelt. irgendwie muss es gehen, weil diese API-Klasse offensichtlich Basis der Typoscript-Ausgabe ist: 
https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/Records/Index.html#cobj-records-properties-categories. 
Die nimmt mehrere Kategorien … 
Ich schätze, ich werde mir diese Typoscript-Funktion im PHP anschauen, dann werde ich es schon begreifen. 

Der Vorteil: man könnte die Klasse auch ausserhalb von Extbase verwenden, z. B. in einer Userfunc.  

Gruß
Peter



> Am 14.07.2016 um 22:00 schrieb Dr. Dieter Porth <typo3 at mobger.de>:
> 
> Hallo Peter,
> 
> Einen System-Record "category-collection" wie bei den Files gibt es nicht.
> 
> Was möchtest du erreichen?
> 
> Was ist denn eine Categorie-Collection? ist das eine Kategorie, die anderen Kategorien übergeordnet ist?  dann sollte dein query, die UID der übergeordneten Kategorie in dem Feld Parent wiederfinden?  Du könntest also ein entsprechende Query schreiben.
> 
> 
> Mit besten Grüßen
> 
>  Dieter
> 
> Am 13.07.2016 um 19:45 schrieb Peter Linzenkirchner:
> 
>> OK, ich habe es jetzt so gemacht, ohne die CategoryCollection, da komme ich nicht weiter:
>> 
>> public function findByCategories($categories='') {
>>    $constraint = array();
>>    $query = $this->createQuery();
>>    if (!is_array($categories)) {
>>        $categories = GeneralUtility::intExplode(',', $categories, true);
>>    }
>>    foreach ($categories as $category) {
>>        $categoryConstraints[] = $query->contains('categories', $category);
>>    }
>>    $constraint[] = $query->logicalOr($categoryConstraints);
>>    if (!empty($constraint)) {
>>        $query->matching(
>>            $query->logicalAnd($constraint)
>>        );
>>    }
>>    $result = $query->execute();
>>    return $result;
>> }
>> 
>> habe ich mir aus der news-Extension abgekuckt - funktioniert erst mal wie gewünscht. Oder hat jemand eine elegantere Lösung?
>> 
>> Peter
>> 
>> --
>> Xing: http://www.xing.com/profile/Peter_Linzenkirchner
>> Web: http://www.typo3-lisardo.de
>> Facebook: http://tinyurl.com/lisardo-multimedia
>> 
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> 
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia



More information about the TYPO3-german mailing list