Drupal / Ubercart ......节点样式?

时间:2009-05-29 12:07:37

标签: drupal attributes styling ubercart

我正在尝试在Drupal站点上设置产品视图的样式,但是遇到了问题。 我无法找到ubercart中节点(产品)视图的放置位置!

我正在使用UC 5.x-1.7,我需要设置节点(产品)视图页面的样式。目前在我的node.tpl.php文件中,我有

print $body;
,它会吐出所有SKU,属性,价格,图片等。

问题是我需要以不同的方式使用它 - 我必须完成设计师完成的设计。我已经开始使用

$node->content['body']['#value']
等变量重新制作我自己的版本。

我在尝试使用产品的各种属性时遇到了麻烦。我无法找到如何将它们放到我的页面上,或者从编码器的角度来看如何使用它们的任何文档。

有更简单的方法吗?我想在哪里设置现有显示的样式(即$ body变量)?

编辑:我的主题基于禅宗主题

4 个答案:

答案 0 :(得分:4)

如果问题纯粹是风格,你可以编写自己的CSS来做到这一点。

您可以使用theamer module告诉您要使用哪些模板文件,我猜您可以覆盖一些带有ubercart的文件。查看信息的候选模板部分

最后,您可以使用hook_nodeapi op=view来控制实际进入页面的内容,以显示在$ body变量中。

答案 1 :(得分:2)

您需要查看将在以下路径下的模板:

./sites/all/modules/ubercart/uc_product/views

这将是一个开始。这就是节点可能构建的地方。

答案 2 :(得分:1)

如果使用Devel模块,您可以看到数组和对象的确切结构,并从$ node对象中准确获取所需内容。然后创建一个node-product.tpl.php文件,并用这些部分替换$ content变量。大多数变量值都具有完整的标记。

如果要更改属性的标记,则需要更改处理属性div的预处理功能。如果你只是从开头和结尾删除id =“attributes”(类可能?我忘了)div,它们都将在各自的class =“attribute”包装器中单独打印。只需将其添加到template.php文件中即可。

然后,您可以使用CSS在页面上移动它们,而不是将它们全部困在一个div中。

您还可以使用上面打印单独页面变量的方法在标记中移动不同的元素。

很多可以使用纯CSS来完成,但是当CSS在错误的浏览器中显示错误时,标记不会中断是很好的。

希望这有帮助。我不确定这一切是否都适用于Drupal 5,因为我正在用6来完成所有这些......所以希望如此。

答案 3 :(得分:1)

以下是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(),查看各种内容字段。