Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 如何在realurl中省略空(可选)段?_Typo3_Typo3 7.6.x_Realurl - Fatal编程技术网

Typo3 如何在realurl中省略空(可选)段?

Typo3 如何在realurl中省略空(可选)段?,typo3,typo3-7.6.x,realurl,Typo3,Typo3 7.6.x,Realurl,目前我正在尝试为我的自定义扩展创建好看的URL 我正在使用“产品”(uid:3)页面上的插件列出所有类别 例如,有以下类别: 男人 衬衫 运动衫 女人 鞋 服装 我想要这些相应的URL: www.mydomain.com/products/men.html www.mydomain.com/products/men/shirts.html 这就是我得到的: www.mydomain.com/products//men.html www.mydomain.com/products/me

目前我正在尝试为我的自定义扩展创建好看的URL

我正在使用“产品”(uid:3)页面上的插件列出所有类别

例如,有以下类别:

  • 男人
    • 衬衫
    • 运动衫
  • 女人
    • 服装
我想要这些相应的URL:

www.mydomain.com/products/men.html

www.mydomain.com/products/men/shirts.html

这就是我得到的:

www.mydomain.com/products//men.html

www.mydomain.com/products/men/shirts.html

第一级的类别“男性”没有父类别,因此此段保持为空。只要有一个父类别,一切都很好

第三版:7.6.15

realurl版本:2.1.6

这是我当前对fixedPostVars的配置:

'fixedPostVars' => array ( 
// EXT: productsDb start           
'productsDbConfiguration' => array(
    array(
        'GETvar' => 'tx_productsdb_categories[action]',
        'valueMap' => array(
        ),
        'noMatch' => 'bypass'
    ),
    array(
        'GETvar' => 'tx_productsdb_categories[controller]',
        'valueMap' => array(
        ),
        'noMatch' => 'bypass'
    ),
    array(
        'GETvar' => 'tx_productsdb_categories[parent]',
        'lookUpTable' => array(
            'table' => 'tx_productsdb_domain_model_category',
            '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,
        ),
       // 'valueDefault' => '',
    ),
    array(
        'GETvar' => 'tx_productsdb_categories[category]',
        'lookUpTable' => array(
            'table' => 'tx_productsdb_domain_model_category',
            '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,
        )
    ),
),
'3' => 'productsDbConfiguration',
// EXT: productsdb end
),

所以,我的问题是: 如果可选路径段为空,是否有跳过可选路径段的方法以及我需要做什么


提前感谢您查看它。

以下是我用于realurlencodespur\u postProc钩子的代码:

public function encodeUrl(&$params) {
    $originalParameters = $params['pObj']->getOriginalUrlParameters();

    if(array_key_exists('tx_productsdb_categories[category]', $originalParameters)===TRUE) {
        if (strpos($params['URL'], '//')) {
            $encodedSegments = explode('/', $params['URL']);
            $modifiedSegments = array_filter($encodedSegments, 'strlen');
            $params['URL'] = implode('/', $modifiedSegments);
        }
    }
}

如果您还有其他改进意见,请告诉我

由于似乎没有其他解决方案,我现在决定使用realurl的encodeSpURL_Postroc钩子,根据我的需要修改编码的URL,尽管这样做感觉有点脏。