1

我们希望在我们的冲浪报告中包含为冲浪条件提供 5 星评级的能力(使用http://drupal.org/project/fivestar模块)。我们遇到的问题是风况可能不利,因此尽管报告给出了 5 星,但如果风的方式错误,我们需要能够说明这一点。我们想添加名为“Wind Rating”的节点字段,其值为 A 或 B。如果风是有利的,我们将值设置为 A 并坚持使用当前的 star.gif 文件。如果不是有利的风力条件,我们会将值设置为 B 并希望将 star.gif 切换为 starb.gif(这将是一个褪色的版本)。

使用 Drupal 7 和五星级模块实现这一目标的最佳方法是什么?

5 星冲浪报告

4

1 回答 1

1

嗯,这是一个艰难的。让我尝试。

首先:要创建自己的小部件,您可以按照http://www.drupalace.com/drupal_tutorial_make_custom_fivestar_graphics中的步骤操作。从标题开始阅读Make me a star!

现在您知道如何创建自定义小部件,让我们专注于如何使其动态化。使用哪个星图由 widgets 文件夹中的 css 文件中的样式规则决定。因此,为了获得动态图像,我们需要根据我们的条件在输出中添加一个额外的类。

当我检查代码以查看添加类的位置时,我看到line 582在文件中添加了特定于小部件的类fivestar.module fivestar_expand

$class[] = 'fivestar-' . $element['#widget']['name'];

在此行之后,您可以添加

if (my_condition_is_met) {
  $class[] = 'fivestar-' . $element['#widget']['name'] . 'special-case';
}

现在,您可以编辑 css 文件,为这种特殊情况添加您想要显示的图像的规则(不要忘记添加您的自定义图像),您就完成了。

持有:在 Drupal 中破解模块是对它的亵渎,所以正确的步骤是

  1. 将函数 Fivestar_element_info 复制到您的自定义模块并适当命名。
  2. 将行更改'#process' => array('fivestar_expand')'#process' => array('fivestar_expand_custom'),
  3. 将 Fivestar_expand_custom 复制到您的自定义模块并进行前面提到的更改。

在 Drupal 中以正确的方式做这件事有时会非常困难。但是我没有找到更好的解决方案。我希望有一个。

于 2012-11-23T21:30:11.540 回答