Hauptmenü

Werkzeuge

Kategorien

Archiv

TYPO3 9 (9.5) page slug für manuell erstellte Seiten ermitteln und setzen

Erstellt in Extension Entwicklung, TYPO3 am 6. November 2018 vom Daschmi

Mit folgender Funktion kann für Seiten der zugehörige Page slug mittels TYPO3 Funktionen ermittelt und gesetzt werden.

public static function setPageSlug($uid) {

$fieldConfig = $GLOBALS['TCA']['pages']['columns']['slug']['config'];
$slugHelper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\SlugHelper::class, 'pages', 'slug', $fieldConfig);

$connection = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)->getConnectionForTable('pages');
$queryBuilder = $connection->createQueryBuilder();

$queryBuilder->getRestrictions()->removeAll()->add(\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction::class));
$statement = $queryBuilder->select('*')->from('pages')->where(
$queryBuilder->expr()->eq('uid', $uid)
)->execute();

$record = $statement->fetch();

$slug = $slugHelper->generate($record, $record['pid']);

// Update
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('pages')->where(
$queryBuilder->expr()->eq('uid', $uid)
)->set('slug', $slug)->execute();

return $slug;

}