我已经删除了我的数据库中的所有 Slug,希望它们能够自动重新生成 - 但它们不会!
有什么方法可以触发再生吗?从 TYPO3 < 9 升级时,get 最初生成 - 但如何?
感谢您的帮助:)
您可以转到升级>运行升级向导并将向导在所有现有页面中引入 URL 部分(“slugs”)标记为已撤消。
之后,您可以运行此向导并再次为所有页面填充 slug 字段。请注意,此向导仅处理具有空slug
字段的页面。如果您希望处理所有现有页面,请执行如下 SQL 查询:
UPDATE `pages` SET `slug` = NULL;
您还可以查看“slug”扩展,它提供了 slug 字段的批量编辑。 https://extensions.typo3.org/extension/slug/
尝试这个
public static function setPageSlug($uid) {
$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;
}
tablename => 带有 slug 字段的表的名称
slug_field_name => 对应的 slug 字段的名称
TYPO3 具有用于此操作的内置机制。
登录后台,
Upgrade menu
下方ADMIN TOOLS
Run Upgrade Wizard
_Upgrade Wizard
Introduce URL parts ("slugs") to all existing pages
并单击其向导。如果已经执行,请在列表下检查它Wizards marked as done
并通过单击其Mark undone
按钮重新激活它,并记住在它重新出现在顶部的向导列表中时执行它的向导。如果您遇到一条消息,则意味着您缺少空的 slug 字段。Mathias Brodala 的 Answere 完全符合我的要求。
在使用向导之前,我必须准备数据库:
UPDATE `pages` SET `slug` = NULL where 1
这将删除所有(!!!)Slug,以便向导可以重新创建它们。
向导仅在表中存在带有空 slug 的记录时才会显示。向导将忽略所有已设置的 Slug。(我已经测试过了 - 没有任何东西被破坏)。
一个简单有效的解决方案。再次感谢@Mathias Brodala
这个填充给定表的所有空 slug(例如,在将来自外部来源的记录导入自定义扩展之后):
https://www.typo3tiger.de/blog/post/typo3-extension-slugs-automatisiert-generieren.html