Drupal五星模块,根据变量值动态更改star.gif图像

时间:2012-11-22 22:41:45

标签: php css drupal

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

使用Drupal 7和Five Star模块实现此目的的最佳方法是什么?

5 star surf reports

1 个答案:

答案 0 :(得分:1)

那是一个艰难的。让我试试。

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

开始阅读

现在您已经知道如何创建自定义窗口小部件,让我们专注于如何使其动态化。要使用的星形图像由窗口小部件文件夹中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复制到您的自定义模块并执行前面提到的更改。
  4. 在Drupal中以正确的方式执行此操作有时可能非常困难。但我没有找到更好的解决方案。我希望有一个。