2017-12-22 25 views
0

에 로그인하지 때이번역 백엔드

if (is_array($row) && $row['sys_language_uid'] != $GLOBALS['TSFE']->sys_language_content && $GLOBALS['TSFE']->sys_language_contentOL) { 
    $row = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $row,$GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL); 
} 

를 사용하여 페이지에 일부 변수를 변환 그러나 이상한 버그가있다 extbase 확장이 실패합니다. 내가 백엔드에 로그인했을 때만 작동합니다. 로그 아웃하면 기본 언어 만 볼 수 있습니다.

Typo3 사용 8.7

어떤 생각입니까?

답변

0

그래서 문제의 원인을 파악하지 못했지만 문제에 대한 내 자신의 해결책을 찾았습니다. 여기에 업데이트 된 코드는 다음과 같습니다 그래서

$table = 'tx_myExt'; 
     $query = "SELECT * FROM ".$table." WHERE pid=".$pid; 
     $query .= ' AND (sys_language_uid IN (-1,0) OR (sys_language_uid = ' .$GLOBALS['TSFE']->sys_language_uid. ' AND l10n_parent = 0))'; 
     $query .= " AND deleted=0 AND hidden=0"; 

     $res = $GLOBALS['TYPO3_DB']->sql_query($query); 

     while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { 

      //localization 
      // check for language overlay if: 
      // * row is valid 
      // * row language is different from currently needed language 
      // * sys_language_contentOL is set 


      if (is_array($row) && $row['sys_language_uid'] != $GLOBALS['TSFE']->sys_language_content && $GLOBALS['TSFE']->sys_language_contentOL) { 

       $query2 = "SELECT * FROM ".$table." WHERE pid=".$pid; 
       $query2 .= ' AND sys_language_uid = ' .$GLOBALS['TSFE']->sys_language_content; 
       $query2 .= ' AND l10n_parent = ' . $row['uid']; 
       $query2 .= " AND deleted=0 AND hidden=0"; 

       $res2 = $GLOBALS['TYPO3_DB']->sql_query($query2); 
       $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2); 

       //$row = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $row,$GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL); 
      } 
} 

대신 직접 번역 기록에 접근, 난 그냥 쿼리를 반복하고있어 getRecordOverlay을 사용. 나는 어쨌든 이것이 나쁜 습관이라고 읽었지 만, 지금은 효과가있다. 문제의 모든 것이 그 것이다.)

여전히 누군가가 원래의 문제에 대한 해결책을 찾으면 나는 그것을 보게된다.

0

Typoscript Setup에서 페이지 개체에 globally로 정의한 경우 config.sys_language_overlay = 0이 발생합니다.

Typo3 Forge에 ticket 항목이 있습니다.이 항목은 왜 이런 일이 발생했는지 조금 더 자세히 설명하고 필요한 경우 몇 가지 해결 방법을 제공합니다.

+0

힌트를 보내 주셔서 감사합니다. config.sys_language_overlay를 1로 변경했지만 여전히 작동하지 않습니다. 그 티켓에서 해결 방법 중 일부를 시도했지만 아무런 도움이되지 않았습니다 ... – Swissdude