簡體   English   中英

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

[英]How to omit empty (optional) segment in 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/men/shirts.html

第一層的“男人”類別沒有父類別,因此此細分受眾群保持空白。 一旦有了父類別,一切都很好。

TYPO3版本: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

所以,這是我的問題:如果有可選路徑段為空,是否有一種方法和我該怎么做才能跳過?

在此先感謝您的關注。

這是我用於realurl encodeSpURL_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);
        }
    }
}

讓我知道,如果您還有其他需要改進的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM