いくつかの条件付きのクエリを使用してdbからコンテンツを取得するのに疲れており、すべての言語でコンテンツをフェッチする必要があります。私は2つの方法を試しましたが、取得されたのは英語のコンテンツのみですが、他のすべての言語では機能しません...
方法1:
$langcd = \Drupal::languageManager()->getCurrentLanguage()->getId();
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('type', 'page');
->condition('langcode', $langcd);
$nids = $query->execute();
方法2:
$db = \Drupal::database();
$query = $db->select('node', 'n');
$query->fields('n');
$query->condition('type', "page", "=");
$query->condition('langcode', $langcd);
$result = $query->execute()->fetchCol();
そのコンテンツの英語バージョンのみを取得するたびに、その特定のコンテンツの他の言語がdbで利用可能でした。他のすべての言語でコンテンツを取得するのを手伝ってください。
次のコードが機能するはずです。
$langcd = \Drupal::languageManager()->getLanguages();
$langcd = array_keys($langcd);
$query = \Drupal::entityQuery('node')
->condition('status', 1)
->condition('type', 'page');
$query->condition('langcode', $langcd, 'IN');
$nids = $query->execute();
まずアクティブな言語のリストを取得してから、langcode
の条件をIN
に変更します。