Страница категории конфигурации TYPO3 Realurl

У меня TYPO3 7.6.10. У меня есть tx_news.

Я хочу настроить свою страницу с новостями по категориям. Теперь у меня есть:

'newsCategoryConfiguration' => array(
    array(
        'GETvar' => 'tx_news_pi1[overwriteDemand][categories]',
        'lookUpTable' => array(
            'table' => 'sys_category',
            'id_field' => 'uid',
            'alias_field' => 'title',
            'addWhereClause' => ' AND NOT deleted',
            'useUniqueCache' => 1,
            'useUniqueCache_conf' => array(
                'strtolower' => 1,
                'spaceCharacter' => '-'
            )
        )
    )
),

Это работает, и результат:

/domain/page-With-List-Of-News-By-Category/Category

Если есть подкатегория, результат будет:

/domain/-page-With-List-Of-News-By-Category/Category

Как я могу получить:

/domain/page-With-List-Of-News-By-Category/Parent-Category/Sub-Category

person MarioProject    schedule 03.04.2017    source источник


Ответы (2)


Может быть, есть способ быстрее или лучше. Но если вы не найдете, попробуйте это и создайте самостоятельно, используя userfunc таким образом:

'useUniqueCache_conf' => [
    'strtolower' => 1,
    'spaceCharacter' => '-',
    'encodeTitle_userProc' => 'My\Ext\Hooks\News\RealUrlCategories->buildCategoryPath'
];

и класс примерно так:

class RealUrlCategories {
    function buildCategoryPath($parameters) {

        $categoriesPath = '';

        // find category rootline
        // you can find the uid somewhere in $parameters, then iterate for parent categories and read db for the titles to build final string

        ...

        // return generated string like "Parent-Category/Sub-Category"
        return $categoriesPath;
    }
}
person A. wolo Wolski    schedule 03.04.2017
comment
Нет никакого эффекта или работает не так, как ожидалось? Убедитесь, что вызывается пользовательская функция. Очистить кеши автозагрузки. - person A. wolo Wolski; 05.04.2017
comment
Никакого эффекта. Версия realurl: 2.0.14. очищаю все кеши. - person MarioProject; 06.04.2017
comment
а проверить, вызывается ли userfunc? - person MarioProject; 06.04.2017
comment
Положите кубик («называется!»); внутри или что-то в этом роде. Это должно прервать выполнение скрипта. Если ничего не происходит, он не вызывается. Убедитесь, что пространство имен и правильное расположение скрипта, чтобы автозагрузка могла его найти. - person A. wolo Wolski; 07.04.2017
comment
я ставлю die ('вызывается') перед 'class RealUrlCategories' и ничего не происходит :( - person MarioProject; 07.04.2017
comment
Какое пространство имен вы используете и куда поместили файл класса? - person A. wolo Wolski; 09.04.2017
comment
Спасибо за терпеливость. В realconf.php я добавил: encodeTitle_userProc' => 'MyVendor/MyExtension/Hooks/News/RealUrlCategories->buildCategoryPath В RealUrlCategories.php пространство имен: MyVendor\MyExtension\Hooks\News Путь к каталогу: myextension/Hooks/News - person MarioProject; 10.04.2017
comment
Вы должны настроить вызов пространства имен userfunc, используя обратную косую черту следующим образом: 'encodeTitle_userProc' => 'MyVendor\MyExtension\Hooks\News\RealUrlCategories->buildCategoryPath' И файл класса должен находиться в typo3conf / ext / my_extension / Classes / Hooks / News / (вы пропустили каталог классов и обратите внимание на регистр пространства имен: MyVendor \ MyExtension, если ext dir - это my_extension или MyVendor \ Myextension, если ext dir - это myextension. Дополнительные сведения см. в этом документе: docs.typo3.org/typo3cms/CoreApiReference/7.6/ApiOverview/ - person A. wolo Wolski; 10.04.2017
comment
Я тоже пробовал 'strtolower' =>0 ', spaceCharacter' => '_', но ничего не получается. кажется, что useUniqueCache_conf игнорируется - person MarioProject; 10.04.2017
comment
Я устанавливаю 'useUniqueCache' => 0 и принимаю эффекты - person MarioProject; 10.04.2017
comment
Я добился некоторого прогресса! Теперь функция работает. Поэтому я попытался вернуть $params['processedTitle'], например myword / mycategory. Я вижу в таблице tx_realurl_uniqalias правильный псевдоним myword / mycategory, но сгенерированная ссылка - myword% 252Fmycategory. Если я попробую URL-адрес myword / mycategory, typo3 покажет ошибку «Причина: сегмент myword / mycategory не был ключевым словом для postVarSet, как ожидалось на странице с id = 160». Любое предложение? - person MarioProject; 04.05.2017

Проблема в том, что realURL анализирует результат userFunc с помощью rawurlencode. Таким образом, Parent-Category/Sub-Category будет преобразован в Parent-Category%252FSub-Category.

  1. Вы можете вернуть Parent-Category-Sub-Category. Это также будет храниться в кеше.

  2. Также ваш UserFunc может возвращать Parent-Category ~~~ Sub-Category, и вы заменяете ~~~ на / в ловушке $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['encodeSpURL_postProc'], но ~~~ будет храниться в кеше.

  3. Вы также можете добавить другой параметр, например parent_category, но этот необязательный параметр не работает в разделе fixesPostVars, потому что здесь параметр является обязательным, и поэтому, если он пуст, у вас есть категория с двойной косой чертой // в вашем URL-адресе.

Не могли бы вы найти какое-либо другое решение, кроме использования формата «родительская категория-подкатегория»?

person mhirdes    schedule 29.11.2018