2012-04-30 61 views
0

我在添加的块中声明一个函数时遇到了问题。我通过包含放置在主题中的文件来调用函数。我也尝试过摆脱主题文件夹。该功能是在首页的用户。但是,当我在该块中使用相同的功能。屏幕变成空白,没有任何显示。我的块编码的一部分写在下面。请帮帮我。在Drupal 6的块中声明函数

<?php 
global $base_url; 
include($_SERVER['DOCUMENT_ROOT']."/travellar/geoiploc.php"); // indluded file 
$ip = "203.189.25.0"; // Australia IP test 
$country_code = getCountryFromIP($ip, "code"); 

回答

0

我已经没有问题,从模块到定制模块加载功能,但我从来没有尝试加载一个由前一个主题。我不清楚在加载页面内容之前是否加载了主题功能。

您可能需要创建自定义模块或包含文件来保存该功能。查看module_load_include()函数以了解如何加载特定的包含文件。

+0

另一种可能性是直接使用标准php语句“include_once”。 –

+0

感谢您的回答,但我已将此文件放在根文件夹中。我尝试过使用module_load_include()函数,但我无法正确使用此功能。我遇到致命错误:无法重新声明该函数。 –

+0

该错误意味着函数名已被使用,可能是您添加的[两个]。因此,删除函数定义的一个实例或使用不同的函数名称。 –

0

自定义模块将是一个很好的方法,因为它在主题图层之前加载,并且可以从Drupal中的几乎任何地方访问,除了其他模块的权重低于自定义模块。钩子和其他覆盖物也可能派上用场。

但是,如果你必须在主题层中有它,另一种选择是将它添加到你的主题的template.php,它应该可以在page.tpl.php等内部使用,但不是我不相信的块。

/sites/all/modules/mymodule/mymodule.info

name = My Module 
package = ! 
description = It is MY module, not yours! 
core = 6.x 

包 “!”将使这个模块出现在模块页面顶部

/sites/all/modules/mymodule/mymodule.module

<?php 

    // Load mymodule.morePHP.inc 
    module_load_include('inc', 'mymodule', 'mymodule.morePHP'); 

    // A custom function 
    function mymodule_my_custom_function($args) { 
    /* do custom stuff here */ 
    return 'output'; 
    } 

/sites/all/modules/mymodule/mymodule.morePHP.inc

<?php 

    // An included custom function 
    function mymodule_other_custom_stuff() { 

    }