1

我已经设置 RealURL 来生成 url,但它在更改语言后生成混合语言 url。清除缓存并且不更改语言后,网址保持活动语言,没问题。但是在更改语言后,网址变得混合了。语言预设和页面名称保持正确,但描述是两种语言的混合。例如,下面的链接 url 是在同一页面上生成的:

/de/anzeige/kategorie/1/vorrat/all.html (this is correct)
/de/anzeige/categorie/1/voorraad/all.html (mix between german & dutch)

看起来像一个缓存问题?我现在通过在 realurl 配置文件中的语言之间进行所有组合来修复它,但这会使文件变得复杂。

在 realurl 配置文件中,我在开始时使用以下代码进行语言选择:

$lang = substr($_SERVER['REQUEST_URI'], 1, 2);

if($lang=='de') {
    $cat = 'kategorie';
    $alias = 'COALESCE(name_de, name_en, name_nl)';
}
else {
    $cat = 'categorie';
    $alias = 'COALESCE(name_nl, name_en, name_de)';
}

这部分在 postVarSets 中用于从数据库中获取类别名称。我如何从数据库中获取类别名称会有问题吗?

$cat => array(
     array (
         'GETvar' => 'extension[catname]',
                    'lookUpTable' => array (
                        'table' => 'database_table',
                        'id_field' => 'uid',
                        'alias_field' => 'uid',
                        'addWhereClause' => ' AND NOT deleted',
                        'useUniqueCache' => '1',
                        'useUniqueCache_conf' => array (
                            'strtolower' => '1',
                            'spaceCharacter' => '-',
                        ),
                    ),
                ),
                array (
                    'GETvar' => 'extension[catname]',
                    'lookUpTable' => array (
                        'table' => 'database_table',
                        'id_field' => 'uid',
                        'alias_field' => $alias,
                        'addWhereClause' => ' AND NOT deleted',
                        'useUniqueCache' => '1',
                        'useUniqueCache_conf' => array (
                            'strtolower' => '1',
                            'spaceCharacter' => '-',
                        ),
                    ),
               ),
         ),
   ),
4

1 回答 1

1

看起来您没有在页面树中创建实际页面的翻译。您的两个链接中的语言标识符仍然是“de”。所以第一步是创建一个翻译。

下一步是让您的扩展程序支持多种语言,这将为language_*您的表格添加一些字段。如果操作正确,您可以创建类别的翻译,而无需在一个数据库记录中包含多种语言。您最终将获得每种语言的一条记录。

接下来,您需要将语言配置添加到您的 realurl 配置中,就像在新闻扩展中一样:

    array(
            'GETvar' => 'tx_news_pi1[news]',
            'lookUpTable' => array(
                'table' => 'tx_news_domain_model_news',
                'id_field' => 'uid',
                'alias_field' => 'title',
                'addWhereClause' => ' AND NOT deleted',
                'useUniqueCache' => 1,
                'useUniqueCache_conf' => array(
                    'strtolower' => 1,
                    'spaceCharacter' => '-',
                ),
                'languageGetVar' => 'L',
                'languageExceptionUids' => '',
                'languageField' => 'sys_language_uid',
                'transOrigPointerField' => 'l10n_parent',
                'autoUpdate' => 1,
                'expireDays' => 180,
            ),
        ),

然后你就完成了:-)

于 2015-05-04T21:48:00.720 回答