【发布时间】:2011-04-27 02:11:57
【问题描述】:
所以我有一个网站,上面有十几个页面,使用 Drupal 作为 CMS。想知道如何在具有动态属性的任何页面上设置/附加所有 href 链接?
所以这里是一个示例 URL:
http://www.site.com/?q=node/4
我想像这样附加到 URL:
http://www.site.com/?q=node/4&attr=1234
现在我在网站上有一个导航栏,当我将鼠标悬停在链接上时,我看到了 url,但我需要将 &attr=1234 字符串附加到它的末尾。该字符串是动态的,因此它可能会不时更改。
我认为 jQuery 会是一个不错的选择,但 Drupal 是否也有任何功能?
现在我在 Stack 上看到了一些帖子:
问题是我正在学习有关 Drupal 的方法,并且对 jQuery 的经验很少,但两者都变得更好。我看到 jQuery 可以替换 HREF,但看起来他们对 HREF 进行了硬编码,jQuery 可以在页面上找到所有 HREF 并将字符串附加到它吗? Drupal 也有这个功能吗?最好的方法是什么?
还需要它来处理干净或标准的 URL 格式,所以我认为 Apache 会处理这个我只是想确保。
感谢您的帮助
编辑:
看起来普遍的共识是 Drupal 应该处理这种类型的请求。只是在寻找最好的实现。简单的函数调用是最好的,但我希望它动态地将它添加到所有现有的 href 中,因为我希望这是动态的,而不是硬编码任何 url/href 调用。因此,我可以即时添加/删除页面,而无需重新配置/重新编码任何内容。
感谢您的精彩提示
编辑#2:
好吧,也许我在问令人费解的问题。这就是我需要的以及为什么它还不适合我的原因。
我需要在 url 中传递一个值来改变网站的一些外观和感觉。我需要将它传递给页面上的几乎每个 href 标签,而不是用户注销或管理页面。
我在模板代码中看到生成导航链接的位置,所以我虽然可以将属性数组中的代码作为第二个参数传递给函数,但这是设置标记属性而不是 URL 属性。
现在我看到底部导航链接使用这个 Drupal 函数:menu.inc 中的 menu_navigation_links() 但顶部导航使用自定义函数。
template.php 脚本中的这个函数看起来是创建链接的函数
function lplus($text, $path, $options = array()) {
global $language;
// Merge in defaults.
$options += array(
'attributes' => array(),
'html' => FALSE,
);
// Append active class.
if (($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) &&
(empty($options['language']) || $options['language']->language == $language->language)) {
if (isset($options['attributes']['class'])) {
$options['attributes']['class'] .= ' active';
}
else {
$options['attributes']['class'] = 'active';
}
}
// Remove all HTML and PHP tags from a tooltip. For best performance, we act only
// if a quick strpos() pre-check gave a suspicion (because strip_tags() is expensive).
if (isset($options['attributes']['title']) && strpos($options['attributes']['title'], '<') !== FALSE) {
$options['attributes']['title'] = strip_tags($options['attributes']['title']);
}
return '<a href="'. check_url(url($path, $options)) .'"'. drupal_attributes($options['attributes']) .'><b>'. ($options['html'] ? $text : check_plain($text)) .'</b></a>';
}
不知道如何将我需要的东西合并到这个函数中。
所以在主页上缺少 ?q=node/ 并且如果我附加 & 符号会引发错误。
http://www.site.com/&attr=1234 // throws error
但如果我将它修改为正确的格式,它就可以正常工作
http://www.site.com/?attr=1234
【问题讨论】:
-
查看stackoverflow.com/questions/3929356/… 了解操纵URL查询字符串参数的函数