Zum Inhalt springen

Ist es möglich das Page Modul zu erweitern?

Erstellt am 15. Januar 2013 · 4 Antworten · letzte Antwort am 1. März 2013

Tags: Kategorien, Frage

MajPay ·

Hallo,

Ist es möglich dem Page Modul in Typo3 einen Filter hinzuzufügen?
Ich würde gerne die tt_content records nach den records aus sys_category filtern, eine Verbindung der tables habe ich bereits hergestellt.

Es soll für die Seite einen Parameter geben, der den Content switched. Die Funktionalität im Frontend herzustellen sollte machbar sein aber kann ich auch die Anpassung im Backend machen?

Weiß wer wie ich das machen kann?

MajPay ·

Ich glaube für den Zweck muss ich die PageLayoutView überschreiben, sieht mir nicht so aus, als könnte ich das von außen beeinflussen.

$queryParts = $this->makeQueryArray('tt_content', $id, 'AND colPos=' . intval($key) . $showHidden . $showLanguage);

Ist es sinnvoll diesen Weg zu gehen?

Die Website, um die es geht soll im Frontend nach einer bestimmten Kategorie - nennen wir das Kind beim Namen - nach einer Region gefiltert werden.
Um die Sitemap nicht mehrfach vorhanden zu haben aber den Content Editoren einen Überblick über die verschiedenen Regionen zu geben, wäre es von Vorteil die Contents Regionen zuweisen zu können und natürlich in weiterer Folge im Backend auch darauf zu filtern.

Dann gäbe es evtl. die Möglichkeit einen Punkt tiefer anzusetzen.

public function makeQueryArray($table, $id, $addWhere = '', $fieldList = '*') {
		$hookObjectsArr = array();
		if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list.inc']['makeQueryArray'])) {
			foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list.inc']['makeQueryArray'] as $classRef) {
				$hookObjectsArr[] = \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($classRef);
			}
		}
		// Set ORDER BY:
		$orderBy = $GLOBALS['TCA'][$table]['ctrl']['sortby'] ? 'ORDER BY ' . $GLOBALS['TCA'][$table]['ctrl']['sortby'] : $GLOBALS['TCA'][$table]['ctrl']['default_sortby'];
		if ($this->sortField) {
			if (in_array($this->sortField, $this->makeFieldList($table, 1))) {
				$orderBy = 'ORDER BY ' . $this->sortField;
				if ($this->sortRev) {
					$orderBy .= ' DESC';
				}
			}
		}
		// Set LIMIT:
		$limit = $this->iLimit ? ($this->firstElementNumber ? $this->firstElementNumber . ',' : '') . ($this->iLimit + 1) : '';
		// Filtering on displayable pages (permissions):
		$pC = $table == 'pages' && $this->perms_clause ? ' AND ' . $this->perms_clause : '';
		// Adding search constraints:
		$search = $this->makeSearchString($table, $id);
		// Compiling query array:
		$queryParts = array(
			'SELECT' => $fieldList,
			'FROM' => $table,
			'WHERE' => $this->pidSelect . ' ' . $pC . \TYPO3\CMS\Backend\Utility\BackendUtility::deleteClause($table) . \TYPO3\CMS\Backend\Utility\BackendUtility::versioningPlaceholderClause($table) . ' ' . $addWhere . ' ' . $search,
			'GROUPBY' => '',
			'ORDERBY' => $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy),
			'LIMIT' => $limit
		);
		// Filter out records that are translated, if TSconfig mod.web_list.hideTranslations is set
		if ((in_array($table, \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->hideTranslations)) || $this->hideTranslations === '*') && !empty($GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']) && strcmp($table, 'pages_language_overlay')) {
			$queryParts['WHERE'] .= ' AND ' . $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] . '=0 ';
		}
		// Apply hook as requested in http://bugs.typo3.org/view.php?id=4361
		foreach ($hookObjectsArr as $hookObj) {
			if (method_exists($hookObj, 'makeQueryArray_post')) {
				$_params = array(
					'orderBy' => $orderBy,
					'limit' => $limit,
					'pC' => $pC,
					'search' => $search
				);
				$hookObj->makeQueryArray_post($queryParts, $this, $table, $id, $addWhere, $fieldList, $_params);
			}
		}
		// Return query:
		return $queryParts;
	}

Hier scheint man eingreifen zu können. Wie weitreichend kann man die Resultate hier modifizieren? Sehe ich auf Anhieb nicht.

Einen ToolbarItemHook scheint es auch zu geben, in der Toolbar kann ich also scheinbar Elemente einfügen (wie zb einen Content Filter für die Regionen/Kategorien).

hmmmm....

Aber außer separaten Seitenbäumen sehe ich momentan keine andere Möglichkeit das zu lösen.

Unbekannter Benutzer ·

Hi MajPay,

Hast du schon zu dem Thema eine Lösung gefunden? Ich bin auch gerade auf der selben Suche nach dieser Lösung. Ich möchte den tt_content kategorisieren können (dazu schreib ich eine eigene Extension, die tt_content erweitert), und möchte natürlich im "Page" Modul oben die Auswahl geben, nur die Inhalte einer speziellen Kategorie anzuzeigen. Sonst wirds für die Redakteure ja völlig unübersichtlich.

Ich will aber nicht auf tt_news ausweichen, weil mit tt_content einfach mehr Möglichkeiten bestehen (mehrere Bilder, unterschiedliche Bildgrößen, Content verschieben, etc.).

Bei mir gehts auch um regionale Kategorisierung.

MajPay ·

Habe den Gedanken ganz schnell aufgegeben, hätte ich die Entscheidungsgewalt gehabt wäre bei meinem Projekt auch nie im Leben Typo3 zum Einsatz gekommen.

Das hilft dir jetzt natürlich garnicht weiter... tut mir leid.