2017-12-22 26 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セットアップ内でページオブジェクトにconfig.sys_language_overlay = 0がグローバルに定義されている場合に発生します。

Typo3 Forgeにはticketというエントリがあります。これは、これがなぜ起こるのかについてさらに深く説明し、必要に応じていくつかの回避策を示しています。

+0

ヒントをお寄せいただきありがとうございます。 config.sys_language_overlayを1に変更しましたが、それでも動作しません。私はそのチケットの回避策のいくつかを試しましたが、何も助けませんでした... – Swissdude