在drupal7.22 + Voting API 2.11 + Fivestar 7.x-2.0-alpha2下实现不了如《Drupal实战》第281页所述的“没有书评时的顾客平均评分显示”功能。
对没有书评的图书详细页面,没有输出相应的print debug($row);调试信息,相应print views_embed_view('book_average_rate', 'default', $node -> nid);的位置输出为空白,说明没有书评的图书相应的视图输出为空,当然是连“已有0人评论”中的0也没有显示出来(这不同于书上版本情况下只是无五星输出),所以为五星评分单独定制一个模板文件已无法输出了,因为此时的Views就没有输出。这时,我试图添加“NO RESULTS BEHAVIOR”中的Global: Text area来验证一下,果然在没有书评的图书详细页面相应的位置输出了所设置的文本(如暂无书评)。
就因为模块版本的不同,使到老葛的“没有书评时仍想显示五星”的方案实现不了,实在可叹,drupal就是在这类情不好驾驭,请老葛指点迷津!
你有没有仔细的对比一下,你的views和我做的有什么区别?
你有没有仔细的对比一下,你的views和我做的有什么区别?
你把我做的Views和对应的程序复制到你的站点。
有一点,你可能忘了,就是聚合功能的使用。我那里使用了聚合功能。如果不使用聚合功能的话,我的Views也显示不出来。我想可能是这里的原因。
我都认真的对比过了,views中的设置完全相同的,只是用的版本不同
首先谢谢老葛的及时回应。这个问题是我花了半天时间反复对比之后,没有找到原因(除模块版本不同外),才向你求援的。我用的是drupal7.22 + Views 7.x-3.7 + Voting API 2.11 + Fivestar 7.x-2.0-alpha2。你用的那些版本,在预览那里显示的不是五星,而是4.5之类,当提供的上下文参数ID为没有书评的图书ID时,会显示0(个评论)。而我用的版本,则显示五星,当提供上下文参数ID为没有书评的图书ID时,不会显示0,什么也没有,完全输出为空。
按照你的版本来做是可以做出来的,但都改用新版本后就不能做出来了。下面是前后两个版本下预览时的SQL语句(MySQL里面的聚合功能):
前者:
没有透彻了解drupal,这类问题真不好解析,还请老葛先生多多指教才是!!!
你可以变通一下,在views-view.tpl.php里面
你可以变通一下,在views-view.tpl.php里面,有这样一段代码:
<?php if ($rows): ?>
<?php print $rows; ?>
<?php elseif ($empty): ?>
<?php print $empty; ?>
<?php endif; ?>
你将这里的:
<?php print $empty; ?>
替换成,当为0评论的时候情况,把我写在字段里面的代码,放到这个位置,就可以解决问题了。
谢谢指点,搞定!
老葛就是老葛,CTO名符其实。有老葛的指导,学习drupal就有信心了,再一次领略了drupal的灵活强大。
我本想在视图高级设置那里“NO RESULTS BEHAVIOR“设置输出的,但不知如何将你的代码写进去,好像那里只能按规定的写。原来视图高级设置那里的”NO RESULTS BEHAVIOR“设置输出对应的就是views-view.tpl.php模板文件中的$empty,在模板文件里写代码更灵活。