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 есть встроенный механизм для этой операции.

Войдите в бэкэнд,

  1. Нажмите на Upgrade menu под ADMIN TOOLS
  2. Нажмите на Run Upgrade Wizard на Upgrade Wizard карта
  3. Проверить 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

Другие вопросы по тегам