嗯,这是一个艰难的。让我尝试。
首先:要创建自己的小部件,您可以按照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 中破解模块是对它的亵渎,所以正确的步骤是
- 将函数 Fivestar_element_info 复制到您的自定义模块并适当命名。
- 将行更改
'#process' => array('fivestar_expand')
为'#process' => array('fivestar_expand_custom'),
- 将 Fivestar_expand_custom 复制到您的自定义模块并进行前面提到的更改。
在 Drupal 中以正确的方式做这件事有时会非常困难。但是我没有找到更好的解决方案。我希望有一个。