Drupal 8 получает значение следующего идентификатора узла при посещении страницы узла - PullRequest
0 голосов
/ 12 марта 2020

У меня есть список типов узлов рецептов, и когда я посещаю один рецепт <, я хочу показать кнопку, на которой есть ссылка на следующий идентификатор рецепта. Оттуда я смогу найти псевдоним узла и подготовить URL-адрес для размещения в файле ветки. </p>

В моем логе c я запросил базу данных и получил список всех идентификаторов узлов, которые относятся к типу recipe, а код языка соответствует текущему языку страницы.

$current_lang = \Drupal::languageManager()->getCurrentLanguage()->getId();
$current_node_id = \Drupal::routeMatch()->getParameter('node'); // get the ID of the current page being visited
$nids = \Drupal::entityQuery('node')->condition('type','recipes')->execute();
$recipes_id = \Drupal\node\Entity\Node::loadMultiple($nids);
$recipe_keys = array_keys($recipes_id); // creates an array with all recipes page ID

$database = \Drupal::database();
$query = $database->query("SELECT nid FROM node WHERE type = 'recipes' AND langcode = '" . $current_lang . "'");
$results = $query->fetchAll();

Пока что я получаю его на работу.

$language_ids = [];

for($i = 0; $i < count($results); $i++)
    array_push($language_ids, $results[$i]->nid);

Если я изменю dump $ language_ids, то я см. список всех идентификаторов. Теперь я хочу провести l oop через массив ($ language_ids) и найти идентификатор, равный моему текущему идентификатору страницы / узла. После обнаружения этого в $ language_ids я хочу получить доступ к следующему идентификатору, если он есть. В отсутствие следующего элемента в массиве я хочу просто получить доступ к значению в первой позиции.

Ниже приведены остальные мои логи c:

for( $j = 0; $j < count($language_ids); $j++ )
    if( $language_ids[$j] = $current_node_id )
        if(end($language_ids[$j])){
            $variables['next_node'] = $language_ids[0];
        }
        else {
            $next_node_id = $language_ids[4];
            $variables['next_node'] = $language_ids[$j + 1];
        }

Если я var_dump $ next_node, я получаю нулевое значение. Кроме того, если я заменю это:

$variables['next_node'] = $language_ids[$j + 1];

для этого:

$variables['next_node'] = $language_ids[1];

я получу следующее:

enter image description here

Как я могу получить следующее значение моих $ language_ids?

...