目前,管理员可以将管理员的背景图片上传到每个页面。所以基本上页面节点类型有一个名为background_image的字段然后我得到那个图像用CSS将它放到div的背景图像。
我还有第二个名为car_article的内容类型。这些页面列在其中一个页面节点下。所以基本上sitemap看起来像这样:
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页面。那么如何从父页面获取字段内容。如果page是car_article节点类型,则需要始终工作,它会自动尝试从父页面加载背景图像。
谢谢!
答案 0 :(得分:0)
我猜您可以使用http://drupal.org/project/menu_node_views来实现这一目标。
但它可能有点过分......
使用http://drupal.org/project/menu_node,您可以知道父菜单指向的情况。
对于两个级别,在更多node_load上运行不是一个问题。如果你想让它递归并避免加载每个节点,直到找到一个带有图像的节点,那将会很困难。
答案 1 :(得分:0)
只是一个建议,但您可以尝试使用arg()
访问顶级节点 e.g。如果你的页面是
的 /汽车/ BMW 强>
并且节点结构为
的 /节点/ care_node / bmw_node 强>
您可以使用arg(1)
获取汽车节点的ID,然后将其加载到变量中
e.g。
$parentNode = node_load(arg(1));
现在您可以使用parentNode
来访问父节点。
如果您的网站更复杂并且您有多个级别,您可以通过一些数学来找到当前的arg,然后是-1
答案 2 :(得分:0)
我遇到了类似的问题,这就是我如何到达现场,但我觉得它相当复杂。
$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']);