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