Eine eigene TYPO3 Extension (Extbase/Fluid) mit System Kategorien und Datensatzsammlung (Teil 3)
Für alle die den 2. Teil verpasst haben … hier lang.
Wer in seiner TYPO3 Extbase Extension jetzt noch die Möglichkeit anbieten will die Datensatzsammlung anzugeben, benötigt noch ein paar weitere Zeilen Code.
Im Grunde könnte man auch per constants:
plugin.tx_extension.persistence.storagePid =
die storagePID setzen. Aber über das Backend ist es dann doch komfortabler und auch Redakteur freundlich.
Als erstes bearbeiten wir die Controller.php Datei
Vorher:
...
protected function createDemandObjectFromSettings($settings) {
$demand = $this->objectManager->get('Vekategorieext\\HaKategorieext\\Domain\\Model\\NeuerInhalt'); // Neuer Inhalt ist der Dateiname vom Domain Modell -> Classes -> Domain -> Model
$demand->setCategories($settings['categories']);
return $demand;
}
...
Nachher:
...
protected function createDemandObjectFromSettings($settings) {
$demand = $this->objectManager->get('Vekategorieext\\HaKategorieext\\Domain\\Model\\NeuerInhalt'); // Neuer Inhalt ist der Dateiname vom Domain Modell -> Classes -> Domain -> Model
$demand->setCategories($settings['categories']);
$demand->setStartingpoint($settings['startingpoint']);
return $demand;
}
...
NeuerInhalt.php (Classes -> Domain -> Model)
In dieser Datei müssen folgende Zeilen hinzugefügt werden:
/**
* @var string
*/
protected $startingpoint;
/**
* @param string $startingpoint
*/
public function setStartingpoint($startingpoint) {
$this->startingpoint = $startingpoint;
}
/**
* @return string
*/
public function getStartingpoint() {
return $this->startingpoint;
}
NeuerInhaltRepository.php (Classes -> Domain -> Repository)
Diese Datei muss ebenfalls erweitert werden und zwar im Bereich der „function createConstraintsFromDemand“.
Vorher (Zwischen diesen Zeilen hinzufügen):
...
$constraints = array();
$categories = $demand -> getCategories();
...
Nachher:
...
$constraints = array();
$startingpoint = $demand -> getStartingpoint();
if ((!empty($startingpoint))) {
$pidList = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(',', $startingpoint, TRUE);
$constraints[] = $query -> in('pid', $pidList);
}
$categories = $demand -> getCategories();
...
Und noch die Flexform.xml um folgende Zeilen erweitern
Vorher (Zwischen diesen Zeilen hinzufügen):
...
</settings.categories>
</el>
...
Nachher
...
</settings.categories>
<settings.startingpoint>
<TCEforms>
<exclude>1</exclude>
<label>Datensatzsammlung</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>3</size>
<maxitems>50</maxitems>
<minitems>0</minitems>
<show_thumbs>1</show_thumbs>
<wizards>
<suggest>
<type>suggest</type>
</suggest>
</wizards>
</config>
</TCEforms>
</settings.startingpoint>
</el>
...
Sollten noch keine Änderungen sichtbar sein, die Extension einmal deaktivieren und gleich wieder aktivieren. Im Anschluss den kompletten TYPO3-Cache löschen und kontrollieren ob das Feld für die Datensatzsammlung vorhanden ist.
Getestet mit der Extension aus Teil 2 und TYPO3 7.6.23
Weitere Beiträge
TYPO3 Ressourcen Image auslesen und anzeigen ab Version 6.2
TYPO3 | Layout Dropdown bei fluid_styled_content nutzen
Schneller, besser, effizienter - mit diesen Tools wirst du zum Coding-Champion!
CSS3 Animation mit CSS Transitions