在我的Drupal站点上,我使用Views模块创建了一个用户页面,它只是一个样式良好的用户网格(HTML表)。我为每个用户显示了几个字段,并且姓名和个人资料图片都被设置为链接到用户节点。
更改它使整个单元格(HTML td)链接到用户节点的最佳方法是什么?编辑:我关心的不是添加HTML链接标签,而是访问每个个人资料页面的URL。
我已经考虑过修改视图的主题(覆盖样式输出,例如views- view -grid--users.tpl.php),但没有看到一种优雅的方法来获取用户节点的URL。
编辑:我用javascript实现了一个临时解决方案,它查看每个单元格的HTML,提取第一个链接的URL并使用它,但是有没有更好的方法使用Drupal变量来完成这项工作呢?
谢谢你的帮助。
发布于 2010-05-25 18:02:18
好吧,我找到了一种更好的(超级简单的)方法来提取配置文件URL,而且我克服了整个区块链接解决方案(归因于espais)的一些问题,我认为这些问题值得记录下来。所以这是我最初问题的完整解决方案:
1)添加一个自定义模板文件来覆盖views-view-fields.tpl.php (参见http://views-help.doc.logrus.com/help/views/using-theme -感谢barraponto中的有用链接)。在这个自定义文件中,您应该将所有代码包装在一个链接中,并在结尾处添加一个clear-fix div,以将该链接拉伸到容器的整个高度。
<a class="td-link" href="user/<?php print $row->uid; ?>">
...
<div class="clear-fix"></div>
</a>2)现在你需要去掉每个网格元素内部的任何其他链接,因为你不允许嵌套HTML链接(产生非常奇怪的行为)。要做的第一件事是编辑视图,并确保所有字段都没有选中"link this field to it's user“。然后,如果你想包括头像字段,你需要添加一个小的修复模块,因为在默认情况下,没有办法阻止这个字段成为链接!你可以从下面的评论中获得这个模块:http://drupal.org/node/720772#comment-2757536
3)最后是CSS。将以下内容添加到主题的style.css中:
a.td-link {
display: block;
color: #000;
text-decoration: none;
border: 1px solid #E9EFF3;
}
a.td-link:HOVER {border-color: #85b3d4;}
a.td-link label {cursor: pointer;}
div.clear-fix {clear: both;}这将从文本中删除链接格式(因为我们希望整个块看起来像一个链接,而不仅仅是文本),并拉伸链接以填充容器。它还使光标图形保持一致,并在您将鼠标悬停在块上时添加一个很好的边框效果。请记住,您还可以将自定义CSS类添加到视图中,这使得在CSS代码中选择要设置样式的元素变得更容易/更整洁。
发布于 2010-05-11 20:36:58
比如this...no JavaScript needed怎么样?
在您的表中:
<td><a href="..." class="td_link">the link</a></td>
...在CSS文件中:
.td_link {
display: block;
width: 100%;
}所以基本上你需要做的就是给你的链接添加一个类和一小段CSS。
发布于 2010-05-11 21:19:01
区分实际的链接、带有标签的链接和你可以点击的任意元素是很重要的。即使你不关心语义,你也应该关心你的访问者没有运行JavaScript,特别是搜索引擎。
正如espais建议的那样,您应该将链接转换为块元素,而不是将块元素转换为链接。对标记进行更多控制的一种方法是使用custom fields在其余字段周围为链接添加开始和结束标记。
https://stackoverflow.com/questions/2810341
复制相似问题