Drupal/Ubercart ...节点样式?
Posted
技术标签:
【中文标题】Drupal/Ubercart ...节点样式?【英文标题】:Drupal/Ubercart ... node styling? 【发布时间】:2010-10-29 20:49:51 【问题描述】:我正在尝试在 Drupal 网站上设置产品视图的样式,但遇到了问题。 我在ubercart中找不到节点(产品)视图放在一起的位置!
我使用的是 UC 5.x-1.7,我需要设置节点(产品)视图页面的样式。目前在我的 node.tpl.php 文件中,我有
print $body;吐出所有 SKU、属性、价格、图片等。
问题是我需要采用不同的风格 - 我必须按照设计师完成的设计工作。我已经开始重新做我自己的版本,使用像
这样的变量$node->content['body']['#value']等
我在尝试使用产品的各种属性时遇到了麻烦。我不知道如何将它们放到我的页面上,或者从编码人员的角度来看如何使用它们的任何文档。
有没有更简单的方法?我会在哪里设置现有显示的样式(即 $body 变量)?
编辑:我的主题是基于 Zen 主题
【问题讨论】:
【参考方案1】:如果问题纯粹是样式问题,您可以编写自己的 CSS 来执行此操作。
您可以使用theamer module 告诉您要使用哪些模板文件,我猜您可以覆盖 ubercart 附带的一些模板文件。查看信息的候选模板部分
最后,您可以使用hook_nodeapi op=view 来控制实际进入页面以在 $body 变量中显示的内容。
【讨论】:
【参考方案2】:您需要查看位于以下路径下的模板:
./sites/all/modules/ubercart/uc_product/views
这将是一个开始。这就是可能构建节点的地方。
【讨论】:
【参考方案3】:如果您使用Devel 模块,您可以看到数组和对象的确切结构,并从$node 对象中准确获取您需要的内容。然后制作一个 node-product.tpl.php 文件,并用这些部分替换 $content 变量。这些变量值中的大多数都具有完整的标记。
如果您想更改属性的标记,您需要更改处理属性 div 的预处理函数。如果您只是从头到尾删除 id="attributes" (可能是类?我忘了)div,它们都会在自己的 class="attribute" 包装器中单独打印。只需将其添加到您的 template.php 文件中即可。
然后,您可以使用 CSS 将它们移动到整个页面,而不是将它们全部困在一个 div 中。
您还可以使用上述打印单独页面变量的方法来移动标记中的不同元素。
很多事情都可以用纯 CSS 完成,但是当 CSS 在不良浏览器中错误显示时,标记不会中断,这很好。
希望这会有所帮助。我不确定所有这些是否都适用于 Drupal 5,因为我用 6 完成了所有这些......所以希望如此。
【讨论】:
值得一提的是用于firebug的drupal插件drupal.org/project/drupalforfirebug这个工具相当不错。【参考方案4】:这是 Jeremy French 提到的使用 hook_nodeapi 的示例:
/**
* Implements hook_nodeapi().
*/
function YOUR_MODULE_nodeapi(&$node, $op, $arg3 = NULL, $arg4 = NULL)
switch ($op)
case 'view':
// Don't show list price unless set.
if (isset($node->content['list_price']) && $node->list_price == 0)
unset($node->content['list_price']);
break;
查看 modules/ubercart/uc_product/uc_product.module 中的 uc_product_view() 以查看各种内容字段。
【讨论】:
以上是关于Drupal/Ubercart ...节点样式?的主要内容,如果未能解决你的问题,请参考以下文章
需要有关 drupal、ubercart 和产品加载模块挂钩的帮助