【问题标题】:Magento Product rating display summery of single reviewMagento 产品评级显示单条评论摘要
【发布时间】:2015-06-15 16:50:23
【问题描述】:

我使用 5 个评分选项进行产品评论。
如下图所示。

但我还想显示该评论的总分。
一个分数,显示该分数的总分 5 的平均分数。

(我不想显示所有评论的平均值,只显示每条评论的平均值)

带有评论摘要代码的新代码:

<?php $reviews = Mage::getModel('review/review') ->getResourceCollection() ->addStoreFilter(Mage::app()->getStore()->getId())  ->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED) ->setDateOrder() ->addRateVotes();
$avg = 0; $totalrv = 0; $totalrvper =0; $ratings = array();
if (count($reviews) > 0) { foreach ($reviews->getItems() as $review) { foreach( $review->getRatingVotes() as $vote ) { $totalrv = $totalrv +$vote->getValue(); $totalrvper = $totalrvper + $vote->getPercent(); }
} $totalrv= ($totalrv/3)/4; $totalrvper = ($totalrvper/3)/4; $avgrate = round($totalrv, 1); } ?>

        <div class="summaryrating">
            <div class="categoryratings-header" style="display: none;">
                <?php echo $this->getReviewsSummaryHtml($_product, false, true)?>
            </div>
            <span class="reviewratingstars">            
                <div class="rating-box" style="padding-bottom: 34px;">
                    <div style="width:<?php echo $totalrvper; ?>%;" class="rating"></div>
                </div>
            </span>
            <span class="showcategoryratings" id="showcategoryratings-header">
                <span class="showcategoryratings-text" title="Bekijk de beoordelingen per categorie">Per categorie</span>
            </span>
        </div>

这是我的详细.phtml

    <?php $_votes = $this->getRatingVotes($_review->getId());?>
    <?php if (count($_votes)): ?>
    <table class="ratings-table">
        <col width="1" />
        <col />
        <tbody>
            <?php foreach ($_votes as $_vote): ?>
            <tr>
                <th><?php echo $_vote->getRatingCode() ?></th>
                <td>
                    <div class="rating-box">
                        <div class="rating" style="width:<?php echo $_vote->getPercent() ?>%;"></div>
                    </div>
                </td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    <?php endif; ?>

我怎样才能显示这个?

编辑以显示单个评论摘要:

    <div class="ratingstars">
            <h4 class="title-beoordeling">Beoordeling</h4>
            <ul class="ratingbox">
            <?php foreach ($this->getRating() as $_rating): ?>
                <?php if($_rating->getPercent()): ?>
                     <li>
                        <span class="ratingcategoryname"><?php echo $this->__($_rating->getRatingCode()) ?></span>
                        <span class="reviewratingstars">
                            <div class="rating-score sum">
                                <div class="score-rating" style="width:<?php echo ceil($_rating->getPercent()) ?>%;"></div>
                            </div>
                        </span>
                    </li>
                <?php endif; ?>
            <?php endforeach; ?>

            <?php foreach ($_votes as $_vote): ?>
        <?php $summary += $_vote->getPercent(); ?>
        <?php $total++ ?>
            <?php endforeach; ?>
                     <li class="averagerating">
                        <span class="ratingcategoryname">Gemiddelde beoordeling</span>
                        <span class="reviewratingstars">
                            <div class="rating-score sum">
                                <div class="score-rating" style="width:<?php echo $summary/$total ?>%;"></div>
                            </div>
                        </span>
                   </li>
            </ul>
    </div>

【问题讨论】:

    标签: php magento


    【解决方案1】:
        <?php $reviews = Mage::getModel('review/review') ->getResourceCollection() ->addStoreFilter(Mage::app()->getStore()->getId()) ->addEntityFilter('product', Mage::registry('current_product')->getId()) ->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED) ->setDateOrder() ->addRateVotes();
    $avg = 0; $avgper = 0; $totalrv = 0; $totalrvper =0; $ratings = array(); $count = 0;
    if (count($reviews) > 0) { foreach ($reviews->getItems() as $review) { foreach( $review->getRatingVotes() as $vote ) { $totalrv = $totalrv +$vote->getValue(); $count++; $totalrvper = $totalrvper + $vote->getPercent(); }
    } $avg= $totalrv/count($reviews); $avgper = round($totalrvper/$count ,1);} ?>
            <div class="summaryrating">
                <div class="categoryratings-header" style="display: none;">
                    <?php echo $this->getReviewsSummaryHtml($_product, false, true)?>
                </div>
                <span class="reviewratingstars">
    
                    <div class="rating-box" style="padding-bottom: 34px;">
                        <div style="width:<?php echo $avgper; ?>%;" class="rating"></div>
                    </div>
                </span>
                <span class="showcategoryratings" id="showcategoryratings-header">
                    <span class="showcategoryratings-text" title="Bekijk de beoordelingen per categorie">Per categorie</span>
                </span>
            </div>
    

    【讨论】:

    • 不显示评论摘要。这显示了所有评级明星的总评论。我想要那篇评论的摘要。
    • 你想要设计的平均值 + snelheid + ...?
    • 是的,我想要所有五个值的平均值。所以单条评论平均。就像显示所有评论平均值的评论摘要一样。但在这种情况下,我想要每条评论的平均值。
    • Kaes,显示的数据不刷新。当我删除评论时,平均分数不会更新。我该如何解决?
    • 删除是什么意思?从管理员审查管理?如果您有一个网址可以观看您的网站,它可以提供帮助:D
    【解决方案2】:
    <?php
    $reviews = Mage::getModel('review/review')->getResourceCollection()->addStoreFilter(Mage::app()->getStore()->getId())->addEntityFilter('product', Mage::registry('current_product')->getId())->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)->setDateOrder()->addRateVotes();
    $avgper = 0;
    $totalrvper = 0;
    $ratings = array();
    $count = 0;
    $totalcount = 0;
    if (count($reviews) > 0) {
    foreach ($reviews->getItems() as $review) {
        foreach ($review->getRatingVotes() as $vote) {
            $totalcount++;
            $totalrvper = $totalrvper + $vote->getPercent();
            $ratings[$vote->getCode()]["count"] = $ratings[$vote->getCode()]["count"] + 1;
            $ratings[$vote->getCode()]["avg"] = $ratings[$vote->getCode()]["avg"] + $vote->getPercent();
        }
    }
    $avgper = round($totalrvper / $totalcount, 1);}?>
    <div class="summaryrating">
    <div class="categoryratings-header" style="display: none;">
    <?php echo $this->getReviewsSummaryHtml($_product, false, true) ?>
    </div>
    <span class="reviewratingstars">
    
        <div class="rating-box" style="padding-bottom: 34px;">
            <div style="width:<?php echo $avgper; ?>%;" class="rating"></div>
        </div>
    </span>
    <span class="showcategoryratings" id="showcategoryratings-header">
        <span class="showcategoryratings-text" title="Bekijk de beoordelingen per categorie">Per categorie</span>
    </span>
    <span class="reviewperratingstars">
    <?php foreach($ratings as $code => $rating) : ?>
        <div class="rating-box" style="padding-bottom: 34px;">
            <span class="label"><?php echo $code ?></span>
            <span style="width:<?php echo round($rating["avg"]/$rating["count"],1); ?>%;" class="rating"></span>
        </div>
    <?php endforeach; ?>
    </span>
    

    `

    【讨论】:

    • 谢谢。尝试了您的代码,但没有奏效。在我的问题中查看我当前的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多