我安装了drupal 7,我需要在用户个人资料页面中包含一个PHP代码块。
我创建了一个新块,并将此代码放入其中:
"include (http://mysite/sites/all/themes/campi_aggiuntivi.php)"
在“campi_aggiuntivi.php”中,我输入以下代码:
session_start ();
print_r ($ _SESSION);
但它返回一个空数组。
如何在此外部页面中与drupal会话进行交互?
非常感谢你的answares。
谢谢大家的回答。 我正在尝试安装一个模块,并按照我的建议将其插入块中。
我创建了文件test.info
name = Test Block
description = description Test Block
package = package Test Block
core = 7.x
dependencies[] = block
; Information added by drupal.org packaging script on 2013-02-01
version = "7.x-1.x-dev"
core = "7.x"
project = "Test Block"
datestamp = "1359680350"
但我无法弄清楚我在test.module文件中放入哪个函数,插入测试模块管理界面块
你能帮帮我吗? 再次感谢所有答案 0 :(得分:0)
我认为你需要包括Drupal Bootstrap和一些其他必要的程序。这可能有助a link to an issue on d.o。
答案 1 :(得分:0)
我想建议的第一件事就是不要包含这样的内容:
"include (http://mysite/sites/all/themes/campi_aggiuntivi.php)"
改为使用本地路径:"include (sites/all/themes/campi_aggiuntivi.php)"
但这取决于您调用的位置,如果两个文件位于同一位置(在用户配置文件tpl文件中调用),那么这可能有效:"include (campi_aggiuntivi.php)"
我认为您需要会话详细信息来计算用户ID,可以从$ profile变量或arg(1)
中检索该信息答案 2 :(得分:0)
我没有测试过您的代码,但您尝试的方式并不是扩展Drupal功能的传统方法。
我也希望print_r( $ _SESSION );实际上是print_r( $ _ SESSION );在你的代码中,即没有空格。
如果您想在用户个人资料页面中添加一个块,我建议您以drupal方式进行。
Drupal已经有了一个以编程方式创建块的优秀示例。 Here is the link
看看里面的block_example模块。它将为您提供可用于创建块的相关示例代码。
该示例还包含有关如何在默认情况下使块出现在某些页面中的信息。
创建块后,将它们放在您想要的区域,例如左侧边栏,用户个人资料页面上启用的相关主题的内容等。
在自定义模块中,您可以访问$ _SESSION变量。
从这里开始,您可以在模块内部的campi_aggiuntivi.php中包含代码。
或使用以下万无一失的方法加载文件。当你从一个主题中调用它时,这甚至可以工作。
假设您要使用自定义模块中的custom_module_name.campi_aggiuntivi.inc,从主题中可以使用module_load_include
例如,
module_load_include('inc', 'custom_module_name', 'custom_module_name.campi_aggiuntivi');
上述调用将从 custom_module_name 模块文件夹中加载 custom_module_name.campi_aggiuntivi.inc 。这样,您就不必硬编码访问文件所需的路径。
答案 3 :(得分:0)
根据您的更新...听起来您现在正在尝试以编程方式创建块。您可以在Drupal.org上下载example modules。该下载中有一个块模块。