簡體   English   中英

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;

您還可以查看“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 字段的名稱

Mathias Brodala 的 Answere 完全符合我的要求。

我必須在使用向導之前准備數據庫: UPDATE `pages` SET `slug` = NULL where 1

這將刪除所有 (!!!) Slug,以便向導可以重新創建它們。

向導僅在表中有帶有空 slug 的記錄時才會出現。 向導將忽略已設置的所有 Slug。 (我已經對其進行了測試 - 沒有任何損壞)。

一個簡單有效的解決方案。 再次感謝@Mathias Brodala

TYPO3 具有用於此操作的內置機制。

登錄后台,

  1. 單擊ADMIN TOOLS下的Upgrade menu
  2. 單擊Upgrade Wizard卡上的Run Upgrade Wizard
  3. 檢查將Introduce URL parts ("slugs") to all existing pages列表中的Introduce URL parts ("slugs") to all existing pages ,然后單擊其向導。 如果已執行,請在“ Wizards marked as done列表下檢查它,然后單擊“ Mark undone按鈕重新激活它,並記住在它重新出現在頂部的向導列表中后執行其向導。 如果您遇到一條消息,則意味着您缺少空的 slug 字段。

這個填充給定表的所有空 slug(例如,在將來自外部來源的記錄導入自定義擴展之后):

https://www.typo3tiger.de/blog/post/typo3-extension-slugs-automatisiert-generieren.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM