使用自定义 userFunc 更改 fixedPostVars 参数

Alter fixedPostVars argument with custom userFunc

我有一个真正的url2 配置,它要求我按所选语言更改给定类别的标题。关键是只有一个数据库记录带有类别标题,翻译是通过 .xlf 文件进行的。

我现在设法替换了标题,但是映射显然不起作用。 realurl 类 中是否有可以轻松添加数据库记录的方法,或者我是否在 $_GET Paramaeters 中自行解码?

'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 只是 returns 我想在 url.

中使用的字符串

我最终用别名、字段、uid、语言等预先填充了我的 "tx_realurl_uniqalias" table

Translated Alias 仍然是通过

创建的
                $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',

每当创建新的 "Database Record" 并使用刷新的数据重建它时,我仍然需要在后端清除我的 SpokenUrl 别名,但它有效。

查找是通常的查找table格式:

 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' => '-',
                ),
            ),
        ),