2015-01-26 2 views
0

у меня есть:Typo3: страница ссылку в меню, используя значение из пользовательской записи

  • меню 3 уровня
  • пользовательских записей из таблицы называется «tx_products_domain_model_product»
  • продукты поле, называемое «url_alias "

На любой странице этого меню у меня есть запись о продукте. Для страниц, которые имеют запись о продукте я хочу ссылку выглядеть следующим образом:

http://www.sitedomain.com/<url_alias> 

Может ли это быть сделано с TypoScript?

EDIT

Похоже, что это слишком сложно, чтобы сделать все это с TypoScript, поэтому я использую UserFunc. Я проверяю, есть ли запись продукта с идентификатором магазина и вы хотите вернуть этот идентификатор магазина. Если нет, верните текущий UID страницы меню. Проблема в том, как я могу передать UID страницы меню в качестве параметра в userFunc?

class user_productsOnCurrentPage 
{ 
    function main($content, $conf) 
    { 
     if (TYPO3_MODE !== 'FE') 
     { 
      return FALSE; 
     } 

     $product = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
       'shop_id', 'tx_products_domain_model_product', 'pid=' . $conf['currentPageId'] . ' AND deleted=0 AND hidden=0'); 

     if (is_array($product) && ! empty($product ['shop_id'])) 
     { 
      return $product ['shop_id']; 
     } 

     return $conf['currentPageId']; 
    } 
} 

Меню:

lib.mainMenu = HMENU 
lib.mainMenu { 
    ... 
    1 = TMENU 
    1 { 
     ... 
     NO = 1 
     NO { 
      ... 
      # show direct url for external links 
      doNotLinkIt = 1 
      stdWrap.cObject = CASE 
      stdWrap.cObject { 
       key.field = doktype 
       default = TEXT 
       default { 
        field = nav_title // title 

        typolink.parameter.cObject = USER 
        typolink.parameter.cObject { 
         userFunc = user_productsOnCurrentPage->main 
         currentPageId = ????? 
        } 

        typolink.wrap = |<span><strong></strong></span> 
        typolink.ATagBeforeWrap = 1 
        stdWrap.htmlSpecialChars = 1 
       } 
       ... 

ответ

0

Я мог бы получить доступ к идентификатор страницы непосредственно в функции пользователя:

TypoScript:

typolink.userFunc = user_mcfazabosOnCurrentPage->main 

PHP:

$pageId = $this->cObj->getFieldVal('uid'); 
Смежные вопросы