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

* Werbung/Affiliate Link
Aktien und ETFs kaufen

Schreibe einen Kommentar

Erforderliche Felder sind entsprechend markiert.

Wird nicht veröffentlicht.

Datenschutz
Programmier-Tipps - Programmieren lernen ist nicht schwer!

Wir verwenden Cookies, um unsere Webseite für Dich optimal zu gestalten, fortlaufend zu verbessern und die Zugriffe auf unsere Webseite zu analysieren. Cookie-Informationen werden in deinem Browser gespeichert und helfen uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind. Genauere Informationen findest du in unserer Datenschutzerklärung.

Notwendige Cookies

Notwendige Cookies sollten jederzeit aktiviert sein, damit wir deine Einstellungen für die Cookie-Einstellungen speichern können. Details findest du in unserer Datenschutzerklärung.

Google AdSense

Diese Website benutzt Google AdSense, einen Dienst zum Einbinden von Werbeanzeigen der Google Inc. ("Google"). Google AdSense verwendet sogenannte „Cookies“, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website ermöglichen. Genauere Informationen findest du in unserer Datenschutzerklärung.

Diesen Cookie aktiviert zu lassen, unterstützt uns ohne dass du Geld ausgeben musst.

Google Analytics

Diese Website nutzt den Webanalysedienst Google Analytics, der sogenannte Cookies einsetzt. Dies sind kleine Textdateien, die auf Ihrem Device gespeichert werden und eine Analyse der Website-Nutzung ermöglichen. Die erzeugten Informationen werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Weitere Informationen findest du in unserer Datenschutzerklärung.

Das aktivieren ermöglicht es uns unsere Webseite für dich noch attraktiver zu machen.