TYPO3 9,5 LTS - автоматическая (пере) генерация сегментов URL?
Я удалил всех Слагов в моей БД в надежде, что они восстанавливаются автоматически - но они этого не делают!
Есть ли способ запустить регенерацию? При обновлении с TYPO3 < 9 изначально генерируется get - но как?
Спасибо за помощь:)
2 ответа
Вы можете перейти к Upgrade > Run Upgrade Wizard и пометить мастера. Представьте части URL ("слагы") на всех существующих страницах как отмененные.
После этого вы можете запустить этот мастер и снова заполнить поле слагом для всех страниц. Обратите внимание, что этот мастер обрабатывает только страницы с пустыми slug
поле.
Вы также можете посмотреть расширение "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 => имя соответствующего поля заголовка
В TYPO3 есть встроенный механизм для этой операции.
Войдите в бэкэнд,
- Нажмите на
Upgrade menu
подADMIN TOOLS
- Нажмите на
Run Upgrade Wizard
наUpgrade Wizard
карта - Проверить
Introduce URL parts ("slugs") to all existing pages
в списке и щелкните его мастера. Если уже выполнено, проверьте его вWizards marked as done
список и активируйте его, щелкнув егоMark undone
и не забудьте запустить его мастер, как только он снова появится в списке мастеров вверху. Если вместо этого вы встречаетесь с сообщением, это означает, что вам не хватает пустых полей заголовка.
Ответ Матиаса Бродала работает именно так, как я хотел.
Мне пришлось подготовить базу данных перед использованием мастера с: UPDATE `pages` SET `slug` = NULL where 1
Это удаляет всех (!!!) слагов, чтобы их можно было воссоздать с помощью мастера.
Мастер появляется только тогда, когда в таблице есть записи с пустым слагом. Все слагы, которые уже установлены, будут игнорироваться мастером. (Я проверял это - ничто не сломано).
Простое и эффективное решение. Mathias Brodala раз спасибо Mathias Brodala
Он заполняет все пустые слагы для данной таблицы (например, после импорта записей из внешних источников в пользовательское расширение):
https://www.typo3tiger.de/blog/post/typo3-extension-slugs-automatisiert-generieren.html