0

我安装了 drupal 7,我需要在用户配置文件页面中包含一段 PHP 代码。

我创建了一个新块并将此代码放入其中:

"include (http://mysite/sites/all/themes/campi_aggiuntivi.php)"

在“campi_aggiuntivi.php”中,我输入了以下代码:

session_start ();
print_r ($ _SESSION);

但它返回一个空数组。

我如何与这个外部页面中的 drupal 会话进行交互?

非常感谢您的回答。


谢谢大家的答案。我正在尝试按照我的建议安装一个模块并将其插入到块平均中。

我创建了文件 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 中放置了哪个函数,以插入测试模块管理屏幕块

你能帮我吗?再次感谢大家

4

4 回答 4

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) 中检索

于 2013-02-13T17:59:54.753 回答
0

我认为您需要包括 Drupal Bootstrap 和其他一些必要的程序。这是指向可能有帮助的问题的链接。

于 2013-02-13T15:37:03.903 回答
0

根据您的更新..听起来您现在正在尝试以编程方式创建一个块。您可以在 Drupal.org上下载示例模块。该下载中有一个块模块。

于 2013-02-19T22:55:51.523 回答
0

我没有测试您的代码,但您尝试做的方式不是扩展 Drupal 功能的传统方式。

我也希望 print_r ( $ _SESSION ); 实际上是 print_r ( $_SESSION ); 在您的代码中,即没有空格。

如果您想在用户个人资料页面中添加一个块,我建议您使用 drupal 方式。

Drupal 已经有一个以编程方式创建块的优秀示例。这是链接

看看里面的 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 。这样您就不必对访问文件所需的路径进行硬编码。

于 2013-02-13T19:01:46.800 回答