2014-01-23 4 views
1

은 내 뉴스 기사의 URL은 다음과 같은 형태가되고 싶어요 : http://domain.com/news/news-title-for-seo-and-usability-324/TYPO3 RealURL 뉴스 링크는

그리고 나는 단지 뉴스 ID가 디코딩에 사용하고, 제목이 SEO 목적으로 만 추가 할 할 .

어떻게 RealURL, CoolURI 또는 ​​다른 어떤 방법으로 처리 할 수 ​​있습니까?

편집 :

array(
'GETvar' => 'tx_news_pi1[news]', 
'userFunc' => 'EXT:speciality/Classes/Hooks/RealUrlUserFunc.php:&Tx_Speciality_Hooks_RealUrlUserFunc->main', 
       'lookUpTable_fake' => array(
        'table' => 'tx_news_domain_model_news', 
        'id_field' => 'uid', 
        'alias_field' => 'title', 
        'addWhereClause' => ' AND NOT deleted AND NOT hidden', 
        'useUniqueCache' => 1, 
        'useUniqueCache_conf' => array(
         'strtolower' => 1, 
         'spaceCharacter' => '-', 
         'encodeTitle_userProc' => 'EXT:speciality/Classes/Hooks/RealUrlUserFunc.php:&Tx_Speciality_Hooks_RealUrlUserFunc->user_newsid', 
        ), 
       ), 
      ), 

그리고 userfuncs :

이 lookUpTranslation가있다
class Tx_Speciality_Hooks_RealUrlUserFunc { 
public function main(array $params, $parent) { 
    $this->pObj = $parent; 

    if($params['decodeAlias']) { 
     return $this->alias2id($params); 
    } else { 
     return $this->id2alias($params); 
    } 
} 

function alias2id($params){ 
    return array_pop(explode('-', $params['value'])); 
} 
function id2alias($params){ 
    return $this->pObj->lookUpTranslation($params['setup']['lookUpTable_fake'], $params['value'], FALSE); 
} 

function user_newsid($params) { 
    if($params['pObj']->orig_paramKeyValues['tx_news_pi1[news]']) 
     return $params['processedTitle'] ."-". $params['pObj']->orig_paramKeyValues['tx_news_pi1[news]']; 
    else 
     return $params['processedTitle']; 
} 
} 

유일한 문제는 지금까지되어 지금까지 나는 다음과 같은 두 가지 userfuncs으로 원하는 것을 할 관리 그래서 나는 일시적으로 그 기능을 공개하기 위해 Realurl을 해킹해야했다.

어떻게하면 내 userfunc에서 올바른 방법으로 제목을 인코딩합니까?

답변

2

아마도이 방법을 사용하는 것이 더 쉽지만 실제로는 후크를 사용하여 RealUrl을 사용하는 것이 가능합니다. 키워드 "encodeTitle_userProc"입니다 여기를 참조 :

RealUrlConfig :

'product' => array(
    array(
     'GETvar' => 'tx_myextension[product]', 
     'lookUpTable' => array(
      .... 
      'useUniqueCache_conf' => array(
       'strtolower' => 1, 
       'spaceCharacter' => '-', 
       'encodeTitle_userProc' => 'EXT:tx_myextension/Classes/Hooks/RealUrlUserFunc.php:&Tx_Myextension_Hooks_RealUrlUserFunc->user_productsTitle', 
      ), 
      ... 
     ), 
    ), 
), 

그리고 후크 클래스 :

class Tx_Myextension_Hooks_RealUrlUserFunc { 
    function user_productsTitle($params) { 
     return preg_replace('/[R]{1}/', '', $params['processedTitle']); 
    } 
} 
http://docs.typo3.org/typo3cms/extensions/realurl/1.12.7/Realurl/ClasstxRealurlAdvancedphp/Configuration/Index.html?highlight=encodetitle_userproc

다음 URL에서 등록 된 기호를 제거하는 간단한 예제

+0

고마워요! 나는 그것이 작동하는지 점검하고 대답을 accepeted로 표시 할 것입니다. -> orig_paramKeyValues ​​[ 'tx_news_pi1 [뉴스]' '클래스 Tx_Speciality_Hooks_RealUrlUserFunc { 기능 user_newsid ($ PARAMS) { \t \t 경우 ($ PARAMS [ 'POBJ'] : – Dmitri

+0

지금까지 내가 인코딩 부분을 관리했습니다 ]) \t \t \t return $ params [ 'processedTitle']. "-". $ params [ 'pObj'] -> orig_paramKeyValues ​​[ 'tx_news_pi1 [news]']. '.html'; 다른 \t \t \t \t \t 반환 $의 PARAMS [ 'processedTitle']; } }' – Dmitri

+0

그러나 어떻게 링크 기반으로 주어진 뉴스 uid를 기반으로 검색 기반 디코딩 및 디코딩을 우회하는지 잘 모릅니다 ... – Dmitri