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: Bug bei Darstellung der product_reviews

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    Bug bei Darstellung der product_reviews
    am: 05. März 2012, 11:08:13
    Hallo liebe Community.

    Bei der Darstellung der product_reviews (Bewertungen) gibt es das Problem, daß in zwei Ausgaben, die Zeilenumbrüche des Bewertungstextes (reviews_text) nicht ausgegeben werden.
    Das hat zur Folge, daß der Text in eine Zeile geschrieben wird und somit unformatiert erscheint.
    Das ist besonders ärgerlich, wenn man um aller Kunden willen, eine Stellungnahme unter eine Bewertung schreiben möchte, da diese sich ja nun nicht abhebt von der vom Kunden geschriebenen Bewertung.

    Betroffen sind:
    • reviews.php (Ausgabe in template/YOUR_TEMPLATE/module/reviews.html)
      (die Übersicht aller reviews)
    • template/YOUR_TEMPLATE/module/products_reviews.html
      (die reviews die in einem tab in product_info ausgegeben werden)

    Um das Problem zu beheben, folgendes tun:
    In /reviews.php folgendes suchen
    Code: PHP  [Auswählen]
    while ($reviews = xtc_db_fetch_array($reviews_query)) {
                    $module_data[] = array ('PRODUCTS_IMAGE' => DIR_WS_THUMBNAIL_IMAGES.$reviews['products_image'], $reviews['products_name'], 'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id='.$reviews['products_id'].'&reviews_id='.$reviews['reviews_id']), 'PRODUCTS_NAME' => $reviews['products_name'], 'AUTHOR' => $reviews['customers_name'], 'TEXT' => '('.sprintf(TEXT_REVIEW_WORD_COUNT, xtc_word_count($reviews['reviews_text'], ' ')).')<br />'.htmlspecialchars($reviews['reviews_text']).'..', 'RATING' => xtc_image('templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif', sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])));
            }

    und ersetzen mit
    Code: PHP  [Auswählen]
    //replaced htmlspecialchars with nl2br in $reviews['reviews_text'] to fix missing breaks in reviews.html (reviews.php), noRiddle
            while ($reviews = xtc_db_fetch_array($reviews_query)) {
                    $module_data[] = array ('PRODUCTS_IMAGE' => DIR_WS_THUMBNAIL_IMAGES.$reviews['products_image'], $reviews['products_name'], 'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id='.$reviews['products_id'].'&reviews_id='.$reviews['reviews_id']), 'PRODUCTS_NAME' => $reviews['products_name'], 'AUTHOR' => $reviews['customers_name'], 'TEXT' => '('.sprintf(TEXT_REVIEW_WORD_COUNT, xtc_word_count($reviews['reviews_text'], ' ')).')<br />'.nl2br($reviews['reviews_text']).'..', 'RATING' => xtc_image('templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif', sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])));
            }

    Es wurde  bei $reviews['reviews_text'] htmlspecialchars durch nl2br ersetzt.
    Meinen Kommentar könnt ihr natürlich entfernen.

    Und dann noch in /includes/classes/product.php folgendes suchen
    Code: PHP  [Auswählen]
    while ($reviews = xtc_db_fetch_array($reviews_query, true)) {
                                    $row ++;
                                    $data_reviews[] = array ('AUTHOR' => $reviews['customers_name'], 'DATE' => xtc_date_short($reviews['date_added']), 'RATING' => xtc_image('templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif', sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])), 'TEXT' => $reviews['reviews_text']);
                                    if ($row == PRODUCT_REVIEWS_VIEW)
                                            break;

    und mit folgendem ersetzen
    Code: PHP  [Auswählen]
    //added nl2br to reviews_text to fix missing breaks in products_reviews.html, noRiddle
                            while ($reviews = xtc_db_fetch_array($reviews_query, true)) {
                                    $row ++;
                                    $data_reviews[] = array ('AUTHOR' => $reviews['customers_name'], 'DATE' => xtc_date_short($reviews['date_added']), 'RATING' => xtc_image('templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif', sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])), 'TEXT' => nl2br($reviews['reviews_text']));
                                    if ($row == PRODUCT_REVIEWS_VIEW)
                                            break;

    Hier wurde nl2br bei reviews['reviews_text'] hinzugefügt.

    Nach den genannten Änderungen ist die Ausgabe der reviews in Ordnung.

    Grüsse,
    noRiddle

    Linkback: https://www.modified-shop.org/forum/index.php?topic=18676.0
    Managed Server

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    Re: Bug bei Darstellung der product_reviews
    Antwort #1 am: 05. März 2012, 19:18:13
    Nachtrag:

    In der /reviews.php darf htmlspecialchars natürlich nicht ersetzt werden sondern nl2br muß ergänzt werden, sorry.
    Code: PHP  [Auswählen]
    htmlspecialchars(nl2br($reviews['reviews_text']))

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    Re: Bug bei Darstellung der product_reviews
    Antwort #2 am: 06. März 2012, 09:15:36
    Weil aller guten Dinge drei sind....    :-D

    So muß es in /reviews.php aussehen:
    Code: PHP  [Auswählen]
    //added nl2br in $reviews['reviews_text'] to fix missing breaks in reviews.html (reviews.php), noRiddle
            while ($reviews = xtc_db_fetch_array($reviews_query)) {
                    $module_data[] = array ('PRODUCTS_IMAGE' => DIR_WS_THUMBNAIL_IMAGES.$reviews['products_image'], $reviews['products_name'], 'PRODUCTS_LINK' => xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id='.$reviews['products_id'].'&reviews_id='.$reviews['reviews_id']), 'PRODUCTS_NAME' => $reviews['products_name'], 'AUTHOR' => $reviews['customers_name'], 'TEXT' => '('.sprintf(TEXT_REVIEW_WORD_COUNT, xtc_word_count($reviews['reviews_text'], ' ')).')<br />'.nl2br(htmlspecialchars($reviews['reviews_text'])).'..', 'RATING' => xtc_image('templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif', sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])));
            }

    Ansonsten werden in domain/reviews.php, der Übersicht aller Bewertungen, die Breaks als <br /> ausgegeben.

    Also das wo es drauf ankommt umgekehrt als ich im vorangegangenen Post behauptet habe, nämlich so:
    Code: PHP  [Auswählen]
    nl2br(htmlspecialchars($reviews['reviews_text']))

    Sorry nochmals,  :hust:
    noRiddle

    5 Antworten
    4147 Aufrufe
    02. Januar 2011, 19:29:25 von franky_n
    6 Antworten
    1346 Aufrufe
    08. April 2021, 08:33:55 von Hetfield
    10 Antworten
    2340 Aufrufe
    10. März 2021, 04:52:43 von RobtheTop
    6 Antworten
    5798 Aufrufe
    06. Februar 2011, 05:47:08 von xanger