3

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

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

打印$正文;
它会吐出所有的 SKU、属性、价格、图片等。

问题是我需要采用不同的风格 - 我必须按照设计师的设计工作。我已经开始重新做我自己的版本,使用像

$node->content['body']['#value']
等等

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

有没有更简单的方法?我会在哪里寻找现有显示的样式(即 $body 变量)?

编辑:我的主题是基于 Zen Theme

4

4 回答 4

4

如果问题纯粹是样式,您可以编写自己的 CSS 来执行此操作。

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

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

于 2009-05-29T12:36:27.830 回答
2

您需要查看位于以下路径下的模板:

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

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

于 2009-05-29T12:19:41.513 回答
1

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

如果您想更改属性的标记,您需要更改处理属性 div 的预处理函数。如果您只是从头到尾删除 id="attributes" (可能是类?我忘了)div,它们都会在自己的 class="attribute" 包装器中单独打印。只需将其添加到您的 template.php 文件中。

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

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

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

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

于 2009-06-27T07:56:30.243 回答
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() 以查看各种内容字段。

于 2012-01-26T08:42:55.283 回答