我有一个Panel页面,我给出了一个路径:书籍/旅游书籍/%city /%country /%页面。该字段下方的帮助文本显示“到达此页面的URL路径。您可以通过使用必需元素的%name和可选元素的名称来为路径的可变部分创建命名占位符。例如:”node /%node / foo“,”论坛/%论坛“或”仪表板/!输入“。这些命名的占位符可以在参数表单上转换为上下文。”所以我已经适当地命名了我的参数。
所以现在在我的代码中,我需要获取这些参数的值。我见过arg(0),但这需要我知道参数有哪个索引。无论如何通过我在路径中给出的名称访问它?像arg('city')的东西?
原因是,我需要在许多页面上使用类似的路径参数,并且需要在我的模块中访问这些参数的值。但争论可能在另一个页面的不同位置。例如,另一个页面可能位于:flights /%city /%country。然后我想在同一个函数中访问city参数,但它的索引不同。
有人可以帮忙吗?
答案 0 :(得分:1)
你可以先检查arg(0),看看它是'书籍','航班',等等......然后相应地关联名称。将它作为自定义模块中的辅助函数,并在引用之前调用它(无论您在何处引用它)。
答案 1 :(得分:1)
您从面板帮助文本中引用的文本是指哪些面板调用上下文。
如果您想了解正在查看某个内容的上下文,则可以使用面板。如果您有多家商店使用不同的产品,您可能希望根据产品所属的商店控制侧边栏中的哪些块。
这对于面板中的上下文以及命名的placeholdes用于什么至关重要。您可以默认添加不同类型的上下文,fx节点,用户,分类术语。然后,您可以采用不同的方式使用不同的上下文。
如果面板默认选项不够,您还可以创建自己的面板插件,以使其处理您的特殊情况。但是需要花费大量时间来了解面板的工作原理。
使用面板可能不是最简单的选择,它取决于您的目标。但是,如果您不需要创建了解上下文的页面,那么使用视图和主题可能会更容易。视图可以很好地处理URL中的参数,并且样式和配置都要简单得多。
答案 2 :(得分:0)
在Drupal 7中,您可以从hook_content_type_render
获取参数function <your plugin name>_content_type_render($subtype, $conf, $panel_args, $context) {
$block = new StdClass;
$block->title = t('test');
$block->content = 'test panel arg: '.$panel_args[0];
return $block;
}