Developer corner¶
In the Public folder, create the
cf_phpinclude
folder.Within the
cf_phpinclude
folder, you can create file(s) or folder structure. The files will be included in the frontend if the path is set in the Plugin Flexform field: "Script URL".In the Included PHP file, you can utilize the full functionality of a TYPO3 ActionController, including namespaces, use statements, etc.
Example¶
File: cf_phpinclude/MyFolder/ExampleFile.php Include Path in Backend: MyFolder/ExampleFile.php
<?php
use TYPO3\CMS\Core\Utility\GeneralUtility;
function generateMenu($id)
{
$PageRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Domain\Repository\PageRepository::class);
$subPage = $PageRepository->getMenu($id);
return $subPage;
}
generateMenu(1);
File: cf_phpinclude/titleToSlugUpdater.php Include Path in Backend: titleToSlugUpdater.php
<?php
function setPageSlug($uid) {
/*
tablename => name of the table with the slug field
slug_field_name => name of the corresponding slug field
*/
$tablename = "pages";
$slug_field_name = "slug";
$fieldConfig = $GLOBALS['TCA'][$tablename]['columns'][$slug_field_name]['config'];
$slugHelper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\SlugHelper::class, $tablename, $slug_field_name, $fieldConfig);
$connection = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)->getConnectionForTable($tablename);
$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($tablename)->where(
$queryBuilder->expr()->eq('uid', $uid)
)->execute();
$record = $statement->fetch();
$slug = $slugHelper->generate($record, $record['pid']);
// Update
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($tablename)->where(
$queryBuilder->expr()->eq('uid', $uid)
)->set($slug_field_name, $slug)->execute();
//var_dump($slug);
return $slug;
}
$queryBuilder = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)->getQueryBuilderForTable('pages');
$statement = $queryBuilder
->select('uid', 'slug')
->from('pages')
->execute();
while ($row = $statement->fetch()) {
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($row);
setPageSlug($row["uid"]);
}