Получение содержимого поля из родительского узла (Drupal)

На данный момент админ может загружать фоновое изображение от админа на каждую страницу. Итак, в основном тип узла страницы имеет поле с именем background_image, а затем я получаю это изображение и помещаю его в фоновое изображение div с помощью CSS.

У меня также есть второй тип контента под названием car_article. Эти страницы перечислены в одном из узлов этих страниц. Итак, в основном карта сайта выглядит так:

Cars (node type = page, parent)
-Audi (node type = car_article, child page)
-BMW (node type = car_article, child page)
-Chevrolet (node type = car_article, child page)

Теперь мне нужно получить фоновое изображение с родительской страницы, в данном случае страницы Cars. Итак, как я могу получить содержимое поля с родительской страницы. И это должно работать всегда, если страница относится к типу узла car_article, она автоматически попытается загрузить фоновое изображение с родительской страницы.

Спасибо!


person user1069269    schedule 07.05.2012    source источник
comment
Никто не знает, как этого добиться?   -  person user1069269    schedule 08.05.2012
comment
Я не понимаю, что вы пытаетесь сделать. Пожалуйста, предоставьте ссылки и код.   -  person Vishal Khialani    schedule 20.05.2012


Ответы (3)


Я думаю, вы можете добиться этого, используя http://drupal.org/project/menu_node_views.

Но это, наверное, перебор ...

С помощью http://drupal.org/project/menu_node вы можете узнать, на что указывает родительское меню. .

Для двух уровней не очень проблема запустить на большем node_load. Что будет сложно, так это сделать его рекурсивным и избегать загрузки каждого узла, пока вы не найдете узел с изображением ...

person gagarine    schedule 17.06.2012

Просто предложение, но вы можете попробовать получить доступ к верхнему узлу с помощью arg ()

например если ваша страница -
/ cars / bmw
и узлы структурированы
/ node / care_node / bmw_node

вы можете использовать arg(1), чтобы получить идентификатор автомобильного узла, а затем загрузить его в переменную

e.g.

$parentNode = node_load(arg(1));

Теперь вы можете использовать parentNode для доступа к родительскому узлу.

Если ваш сайт более сложный и у вас много уровней, вы можете выполнить некоторые математические вычисления, чтобы найти текущий аргумент, а затем -1.

person David    schedule 07.03.2013

Я сталкиваюсь с аналогичной проблемой, и вот как я попадаю в поле, но я думаю, что это довольно запутанно.

$menuParent = menu_get_active_trail();
reset($menuParent); //point to first
next($menuParent);  //jump next, to skip 'home'
$firstItem = current($menuParent);
$path = drupal_get_normal_path($firstItem['link_path']);
$node = menu_get_object('node', 1, $path);
$field = field_view_field('node', $node, 'background_image');
$sectionBgUrl = file_create_url($field[0]['#item']['uri']);
person jackysee    schedule 26.06.2014