Изменить аргумент fixedPostVars с помощью пользовательской функции userFunc

У меня есть конфигурация realurl2, которая требует от меня изменить название данной категории на выбранный язык. Кикер в том, что есть только одна запись базы данных с заголовком категории, и перевод выполняется через файлы.xlf.

Теперь мне удалось заменить заголовок, однако отображение, очевидно, не работает. Есть ли в классах realurl метод, который может легко добавить запись в базу данных, или я застрял, расшифровывая ее самостоятельно в параметрах $_GET?

'fixedPostVars' => array(
        // TODO: Implement dynamic via typoscript if possible!
        '3' => array(
            array(
                'GETvar' => 'tx_products_products[product_categories]',
                'userFunc' => function(&$params, $ref) use ($recordTranslator){
                    $categoryId = $params['value'];
                    $translation = $recordTranslator->render('Category', 'title', $categoryId, 'products');
                    $realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
                    $realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
                    $translation = $realUrlUtil->convertToSafeString($translation);



                    return $translation;
                }
            ),

Это то, что я кодировал до сих пор. Здесь recordTranslator просто возвращает строку, которую я хочу использовать в URL.

1 ответ

Решение

Я закончил тем, что предварительно заполнил свою таблицу "tx_realurl_uniqalias" псевдонимами, полем, uid, языком и т. Д.

Переведенный псевдоним все еще был создан через

                $realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
                $realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
                $translation = $realUrlUtil->convertToSafeString($translation);

Я сопоставил свои языковые теги Iso с разговорным языком до этого. Для этого я создал объект опечатки в моих настройках.

de {
       ch-de = 1
       de-de = 3
       at-de = 5
     }
     en {
       de-en = 4
     }
     fr {
       ch-fr = 2
     }
     no {
       no = 6
     }

и сохранил поле языка, предоставленное realurl_conf, чтобы отфильтровать перевод. Вот так:

'GETvar' => 'L',
        'valueMap' => array(
            'ch-de' => '1',
            'ch-fr' => '2',
            'de-de' => '3',
            'de-en' => '4',
            'at-de' => '5',
            'no' => '6',
        ),
        'noMatch' => 'bypass',

Мне все еще нужно очищать псевдонимы SpokenUrl в бэкэнде всякий раз, когда создается новая "Запись базы данных", и перестраивать ее с обновленными данными, но это работает.

Поиск - это обычный формат поиска:

 array(
            'GETvar' => 'tx_products_products[product_categories]',
            'lookUpTable' => array(
                'table' => 'tx_products_domain_model_category',
                'id_field' => 'uid',
                'alias_field' => 'title',
                'addWhereClause' => ' AND NOT deleted',
                'useUniqueCache' => 1,
                'useUniqueCache_conf' => array(
                    'strtolower' => 1,
                    'spaceCharacter' => '-',
                ),
            ),
        ),
Другие вопросы по тегам