Programmieren lernen | Codebeispiele | Jobbörse | Webentwicklung

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

Noch keine Kommentare vorhanden. Sei DU der erste!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.