Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php drupal用户名超链接缺少站点url-来自用户加载的ahref($node->uid)_Php_Drupal_Hyperlink_Drupal 7 - Fatal编程技术网

Php drupal用户名超链接缺少站点url-来自用户加载的ahref($node->uid)

Php drupal用户名超链接缺少站点url-来自用户加载的ahref($node->uid),php,drupal,hyperlink,drupal-7,Php,Drupal,Hyperlink,Drupal 7,我正在使用drupal FAQ模块,该模块通过以下方式向管理员发送电子邮件: 'creator' => theme('username', array('account' => user_load($node->uid), 'plain' => TRUE)), 不幸的是,它只链接到/users/joeblock,因此缺少站点url,这意味着它在电子邮件中无法工作 <a href="/users/joeblock" title="View user profile.

我正在使用drupal FAQ模块,该模块通过以下方式向管理员发送电子邮件:

'creator' => theme('username', array('account' => user_load($node->uid), 'plain' => TRUE)),
不幸的是,它只链接到/users/joeblock,因此缺少站点url,这意味着它在电子邮件中无法工作

<a href="/users/joeblock" title="View user profile." class="username">Joe Block</a>

是的,有可能!faq模块使用主题用户名。此主题在includes/theme.inc函数theme\u username中定义

在自定义主题中,您可以实现模板\进程\用户名挂钩并更改$variables数组。 主题用户名使用url函数创建url。此函数接受绝对属性以构建绝对url

要创建此函数,您可以创建一个自定义主题,并将yourthemename\u process\u username函数放入自定义主题的template.php文件中。 否则,您可以在自定义模块中添加该函数

让我们用一个带有markus名称的自定义模块做一个例子,因为创建自定义模块比创建自定义主题更常见。 创建站点/all/modules/custom/markus目录。 在此目录中创建包含以下内容的markus.module文件:

<?php
function markus_node_presave($node){
    if( $node->type == 'faq' ){
        drupal_static('markus_faq_node_save', true);
    }
}

function markus_process_username( &$variables ){
    if( drupal_static('markus_faq_node_save', false) ){
        // alter the link_options only when you came from the ask module otherwise, without 
        // this if, all the username links in drupal will be absolute url.
        // Actually this is not a problem but it may be overkilling
        $variables['link_options']['absolute'] = true;
    }
}
name = markus
description = "my custom module"
core = 7.x
package = "markus"
现在从管理菜单启用您的主题


最好在自定义模块中实现markus_process_username函数,而不要编辑includes/theme.inc文件,因为这样可以更轻松地更新drupal。drupal核心永远不应该被编辑:

酷,谢谢@lastYorsh!只是不知道如何将其实现到自定义主题中。我是否需要创建一个模块或将此代码放在自定义主题内的文件中?在if条件下会发生什么?目前,我正在使用主主题,并尝试在includes/theme.inc中的输出中添加['absolute']=true,但在/MODULES/SYSTEM/MAINTENANCE-PAGE.TPL.PHP$output=l$variables['name']中无法使用未定义的变量$变量['extra'],$variables['link_path'],$variables['link_options']['absolute']=true;糟糕的是,它只是通过粘贴$variables['link_options']['absolute']=true来工作;在输出之前:再次感谢@lastyrosh you rock。如果知道如何在自定义主题中实现这一点,那将是一件非常棒的事情?我看了一下,但没有完全理解。我更新了答案,提供了更多的信息:你太棒了!谢谢你抽出时间,我希望下周能试试。祝你周末愉快。嗨,我已经更新了答案以解决if问题。我需要实现另一个hook,hook\u node\u presave,用drupal\u static设置一个静态变量。只有在创建新的faq节点时,此变量才为真。
name = markus
description = "my custom module"
core = 7.x
package = "markus"