Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Rezensionsaufgliederung nach vergebenen Sternen

    awids

    • Experte
    • Beiträge: 3.787
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #90 am: 11. Februar 2020, 15:30:41
    Puuuh, schwierige Geburt, aber: Herzlichen Glückwunsch - es ist ein Modul mit dem vollständigen Funktionsumfang installiert.  :-D
    rechtstexte für onlineshop

    DerNachbar

    • Schreiberling
    • Beiträge: 494
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #91 am: 11. Februar 2020, 15:36:12
    Zangengeburt ...und nur weil es nicht aus der toggle review filter.php laufen wollte. Danke für die Hilfe! Auch an Tante Uschi für den Hinweis.

    awids

    • Experte
    • Beiträge: 3.787
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #92 am: 11. Februar 2020, 15:38:36
    Optional hier noch eine kleine Sache der Ästhetik:

    Ändere in der Datei /templates/tpl_modified/module/popup_reviews_filter.html mal diesen Teil

    Code: PHP  [Auswählen]
                <span class="rating_icons">
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 1} full{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 2} full{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 3} full{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 4} full{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 5} full{/if}"></i>
                </span>

    mit diesem:

    Code: PHP  [Auswählen]
                <span class="rating_icons">
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 1} full{else} empty{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 2} full{else} empty{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 3} full{else} empty{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 4} full{else} empty{/if}"></i>
                 <i class="fa fa-star{if $module_data.RATING_VOTE >= 5} full{else} empty{/if}"></i>
                </span>

    Dann passen die Sterne in der Filter-Navigation mit den darunterstehenden Bewertungssternen besser zusammen.

    Das musste im aktuellen tpl_modified_responsive (2.0.5.0 - free) nicht gemacht werden, dein CSS tickt da aber anders.

    DerNachbar

    • Schreiberling
    • Beiträge: 494
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #93 am: 11. Februar 2020, 15:58:22
    Das macht sinn und ist schon erledigt. Danke!

    Wo du von Kosmetik sprichst, dachte ich, das ich deinen Tipp einmal umsetze aus Beitrag https://www.modified-shop.org/forum/index.php?topic=40793.msg370849#msg370849
    Ist das in meinem Fall anders zu handhaben, aufgrund meiner anderen Struktur gegenüber dem Standard, oder kann das bei mir so angewendet werden? Würde hübscher aussehen es oben und unten gleich zu haben denke ich.

    awids

    • Experte
    • Beiträge: 3.787
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #94 am: 11. Februar 2020, 16:23:49
    Dürfte bei dir grundsätzlich genau so funktionieren. Nur der Javascript-Teil:

    Code: PHP  [Auswählen]
      <script type="text/javascript">
        var framefenster = document.getElementsByTagName("iFrame");
        var auto_resize_timer = window.setInterval("autoresize_frames()", 400);
        function autoresize_frames() {
          for (var i = 0; i < framefenster.length; ++i) {
            if(framefenster[i].contentWindow.document.body){
              var framefenster_size = framefenster[i].contentWindow.document.body.offsetHeight;
              if(document.all && !window.opera) {
                framefenster_size = framefenster[i].contentWindow.document.body.scrollHeight;
              }
              framefenster[i].style.height = framefenster_size + 'px';
            }
          }
        }
      </script>

    muss in der general_bottom.js.php unter den bereits hinzugefügten Code platziert werden, also direkt nach:

    Code: PHP  [Auswählen]
      <script type="text/javascript">
        $(function() {
          $('#avg_container').click(function() {
            $('.avg_container').slideToggle('slow');
            $('.toggle_cart').slideUp('slow');
            $('.toggle_wishlist').slideUp('slow');
            ac_closing();
            return false;
          });
          $("html").not('.avg_container').bind('click',function(e) {
            $('.avg_container').slideUp('slow');
          });
        });    
      </script>

    Vielleicht verzichtest du aber auch einfach auf das zusätzliche Javascript und vergibst eine feste Höhe für den iFrame. Sonst wird die Seite wirklich ziemlich lang, was auf Smartphones nicht so gut ankommt.

    DerNachbar

    • Schreiberling
    • Beiträge: 494
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #95 am: 11. Februar 2020, 16:52:44
    Vielen Dank,
    ich wollte es dennoch einmal anschauen und dann entscheiden, jedoch löst der Code gar keine Änderung aus. Sieht alles aus wie vorher (ja Cache etc gelöscht).

    Tante Uschi

    • Fördermitglied
    • Beiträge: 279
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #96 am: 12. Februar 2020, 10:09:21
    Hallo noRiddle,

    wenn ich den code von Dir in eben eine solche Datei übernehme, dann zeigt mir {$PRODUCTS_AVERAGE_RATING} eine null an, also gar keine Sterne mehr, hast Du einen Tip für mich, da mich die halben Sterne durchaus interessieren?

    Code: PHP  [Auswählen]
    <?php
    /**************************************************
    * file: recalc_avg_rating.php
    * path /includes/extra/modules/product_info_end/
    * use: recalculate average rating for product
    *
    * (c) 02-2020 noRiddle
    **************************************************/


    $recalc_avg_rev_qu = xtc_db_query("SELECT avg(reviews_rating) AS avg_rating
                                         FROM "
    .TABLE_REVIEWS."
                                        WHERE products_id='"
    .(int)$pID."'
                                          AND reviews_status = '1'"
    );

    $recalc_avg_rev_arr = xtc_db_fetch_array($recalc_avg_rev_qu);

    $recalc_avg_rev = round($recalc_avg_rev_arr['avg_rating'], 2);

    if(TEMPLATE_ENGINE == smarty_2) {
        $info_smarty->clear_assign('PRODUCTS_AVERAGE_RATING');
    } else if(TEMPLATE_ENGINE == smarty_3) {
        $info_smarty->clearAssign('PRODUCTS_AVERAGE_RATING');
    }

    $info_smarty->assign('PRODUCTS_AVERAGE_RATING', $recalc_avg_rev);
    ?>
     

    Gruß

    gogolog

    • Mitglied
    • Beiträge: 106
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #97 am: 12. Februar 2020, 11:16:24
    also das schaut alles sehr gut aus........ vielen Dank awids für dieses schicke Modul......

    VG
    gogolog

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.724
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #98 am: 12. Februar 2020, 12:08:43
    @Tante Uschi
    Wie gesagt habe ich's nicht getestet.
    Da ich im Moment im Stress bin bitte ein wenig Geduld haben. Ich schaue mir das später mal genauer an.

    Gruß,
    noRiddle

    Tante Uschi

    • Fördermitglied
    • Beiträge: 279
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #99 am: 12. Februar 2020, 12:19:43
    Mach Dir keinen Stress @noRiddle ich kann warten und Danke! schon mal fürs drüber schauen. :)

    awids

    • Experte
    • Beiträge: 3.787
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #100 am: 12. Februar 2020, 12:52:19
    Die Null (0) wird angezeigt, da die Variable $pID anscheinend nicht zur Verfügung steht. Abhilfe schafft, wenn man es z. B. so macht:

    Code: PHP  [Auswählen]
    <?php
    /**************************************************
    * file: recalc_avg_rating.php
    * path /includes/extra/modules/product_info_end/
    * use: recalculate average rating for product
    *
    * (c) 02-2020 noRiddle
    **************************************************/


    if ($pID == '') {
      $pID = $_GET['products_id'];
    }

    $recalc_avg_rev_qu = xtc_db_query("SELECT avg(reviews_rating) AS avg_rating
                                         FROM "
    .TABLE_REVIEWS."
                                        WHERE products_id='"
    .(int)$pID."'
                                          AND reviews_status = '1'"
    );

    $recalc_avg_rev_arr = xtc_db_fetch_array($recalc_avg_rev_qu);

    $recalc_avg_rev = round($recalc_avg_rev_arr['avg_rating'], 2);

    if(TEMPLATE_ENGINE == smarty_2) {
        $info_smarty->clear_assign('PRODUCTS_AVERAGE_RATING');
    } else if(TEMPLATE_ENGINE == smarty_3) {
        $info_smarty->clearAssign('PRODUCTS_AVERAGE_RATING');
    }

    $info_smarty->assign('PRODUCTS_AVERAGE_RATING', $recalc_avg_rev);
    ?>

    Man könnte $pID auch alternativ mit isset() abfragen oder gleich $_GET['products_id'] in die Query schreiben.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.724
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #101 am: 12. Februar 2020, 13:01:30
    Genau, ich hatte die mySQL-Abfrage aus der erwähnten Funktion in der product-Class geholt und das übersehen.
    (int)$_GET['products_id']
    ist richtig.

    Außerdem noch smarty_2 und smarty_3 bitte in single-quotes setzen:
    Code: PHP  [Auswählen]
    if(TEMPLATE_ENGINE == 'smarty_2') {
        $info_smarty->clear_assign('PRODUCTS_AVERAGE_RATING');
    } else if(TEMPLATE_ENGINE == 'smarty_3') {
        $info_smarty->clearAssign('PRODUCTS_AVERAGE_RATING');
    }

    Denke gerade noch darüber nach wie man die Halb-Sternchen ins Template bekommt...

    Gruß,
    noRiddle

    *NACHTRAG*
    Ich frage mich gerade noch was das Folgende denn in den products_info_*.html Dateien im tlp_modified_responsive soll:
    {if $PRODUCTS_RATING_COUNT > 1}
    ...
    {elseif $PRODUCTS_RATING_COUNT > 0 }
    ...
    {/if}

    Wozu dient diese Unterscheidung ?

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #102 am: 12. Februar 2020, 13:30:41
    Code: PHP  [Auswählen]
    [...]
    if(TEMPLATE_ENGINE == smarty_2) {
        $info_smarty->clear_assign('PRODUCTS_AVERAGE_RATING');
    } else if(TEMPLATE_ENGINE == smarty_3) {
        $info_smarty->clearAssign('PRODUCTS_AVERAGE_RATING');
    }

    $info_smarty->assign('PRODUCTS_AVERAGE_RATING', $recalc_avg_rev);
    ?>
     

    Info: man muss  eine Smartyvariable welche man mit assign() zuweist nicht mit clearAssign() leeren um ihr wiederum mit assign() einen neuen Wert zu übergeben, konkret überschreibt ein späteres assign() einer bestimmten Smartyvariable einfach ein vorhergehendes.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.724
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #103 am: 12. Februar 2020, 13:39:22
    Okay. Woher hast du die Information ?

    Gruß,
    noRiddle

    awids

    • Experte
    • Beiträge: 3.787
    • Geschlecht:
    Re: MODUL: Rezensionsaufgliederung nach vergebenen Sternen
    Antwort #104 am: 12. Februar 2020, 14:15:13
    Hier mal ein ganz utopisches Beispiel für halbe Sterne (Bewertungsschnitt: 3.67) mit dem Template tpl_modified_responsive und Font Awesome 5:

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Code: PHP  [Auswählen]
              <span class="pd_rating_icons">
                <i class="{if $PRODUCTS_AVERAGE_RATING > 1}fas fa-star{elseif ($PRODUCTS_AVERAGE_RATING > 0 && $PRODUCTS_AVERAGE_RATING < 1)}fas fa-star-half-alt{else}far fa-star{/if} full"></i>
                <i class="{if $PRODUCTS_AVERAGE_RATING > 2}fas fa-star{elseif ($PRODUCTS_AVERAGE_RATING > 1 && $PRODUCTS_AVERAGE_RATING < 2)}fas fa-star-half-alt{else}far fa-star{/if} full"></i>
                <i class="{if $PRODUCTS_AVERAGE_RATING > 3}fas fa-star{elseif ($PRODUCTS_AVERAGE_RATING > 2 && $PRODUCTS_AVERAGE_RATING < 3)}fas fa-star-half-alt{else}far fa-star{/if} full"></i>
                <i class="{if $PRODUCTS_AVERAGE_RATING > 4}fas fa-star{elseif ($PRODUCTS_AVERAGE_RATING > 3 && $PRODUCTS_AVERAGE_RATING < 4)}fas fa-star-half-alt{else}far fa-star{/if} full"></i>
                <i class="{if $PRODUCTS_AVERAGE_RATING > 5}fas fa-star{elseif ($PRODUCTS_AVERAGE_RATING > 4 && $PRODUCTS_AVERAGE_RATING < 5)}fas fa-star-half-alt{else}far fa-star{/if} full"></i>
              </span>

    Lässt sich sicher noch vereinfachen. (War nur eine Spielerei.  :-D )
    39 Antworten
    19901 Aufrufe
    01. März 2014, 21:06:39 von mollvision
    1 Antworten
    3215 Aufrufe
    06. Februar 2011, 04:14:25 von Tomcraft
    0 Antworten
    1179 Aufrufe
    06. April 2016, 22:51:41 von ttsarche