Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
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: ANLEITUNG: Mehrere random Bewertungen auf Startseite

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    am: 11. September 2010, 23:58:28
    Hallo,
    in der /templates/xtc5/source/boxes/reviews.php ist die random Abfrage zur Generierung der random-Bewertung auf der Startseite (/boxes/box_reviews.html) enthalten.
    Ich möchte gerne, dass auf der Startseite 3 random Bewertungen untereinander angezeigt werden, nicht nur eine.
    Wie muss dafür der Code in der reviews.php verändert werden?

    Vielen Dank schon einmal für Hilfe!

    MfG,
    xtc-user09

    [EDIT Tomcraft 16.09.2010: Hier geht es direkt zur Anleitung von franky_n.]



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

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #1 am: 12. September 2010, 22:50:06
    Hi xtc-user09,

    da muss ich noch mal eben drüber nachdenken um die einfachste und flexibelste Lösung zu bauen...
    Stay tuned!

    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #2 am: 13. September 2010, 07:37:39
    Hi xtc-user09,

    so hier mal ein Lösungsansatz.

    \templates\xtc5\source\boxes\reviews.php Z.29ff das ersetzen:

    Code: PHP  [Auswählen]
      $random_select = "select r.reviews_id, r.reviews_rating, p.products_id, p.products_image, pd.products_name from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd, " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = r.products_id ".$fsk_lock." and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
      if ($product->isProduct()) {
        $random_select .= " and p.products_id = '" . $product->data['products_id'] . "'";
      }
      $random_select .= " order by r.reviews_id desc limit " . MAX_RANDOM_SELECT_REVIEWS;
      $random_product = xtc_random_select($random_select);

      if ($random_product) {
        // display random review box
        $review_query = "select substring(reviews_text, 1, 60) as reviews_text from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . $random_product['reviews_id'] . "' and languages_id = '" . $_SESSION['languages_id'] . "'";
        $review_query = xtDBquery($review_query);
        $review = xtc_db_fetch_array($review_query,true);

        $review = htmlspecialchars($review['reviews_text']);
        $review = xtc_break_string($review, 15, '-<br />');

        //BOF - Dokuman - 2010-01-29 - show review stars in box
        //$box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br />';
         $box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br /><div align="center">' . xtc_image('templates/' . CURRENT_TEMPLATE . '/img/stars_' . $random_product['reviews_rating'] . '.gif' , sprintf(BOX_REVIEWS_TEXT_OF_5_STARS, $random_product['reviews_rating'])) . '</div>';
        //EOF - Dokuman - 2010-01-29 - show review stars in box

      } elseif ($product->isProduct()) {

            // Verhindern das Gäste oder Spamer bewerten können. www.aranowa.de
        if (isset($_SESSION['customer_id'])) {

       // display 'write a review' box
       $box_content = '<table border="0" cellspacing="0" cellpadding="2"><tr><td align="left" class="infoBoxContents"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link($product->data['products_id'],$product->data['products_name'])) . '">' . BOX_REVIEWS_WRITE_REVIEW .'</a></td></tr></table>';
        }
      }
     
    durch das:

    Code: PHP  [Auswählen]
      // loop random array
      $number_reviews = 3;
      for ($i=1 ; $i<=$number_reviews; $i++) {
        $random_select1 = "select r.reviews_id, r.reviews_rating, p.products_id, p.products_image, pd.products_name from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd, " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = r.products_id ".$fsk_lock." and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
        if ($product->isProduct()) {
          $random_select2 = " and p.products_id = '" . $product->data['products_id'] . "'";
        }
        $random_select3 = " order by r.reviews_id desc limit " . MAX_RANDOM_SELECT_REVIEWS;

        $random_product[$i] = xtc_random_select($random_select1.$random_select2.$random_select3);

        $random_select2 .= " and r.reviews_id != '".$random_product[$i]['reviews_id']."'";
      }

      if (!$product->isProduct()) {
        $box_content = '';
        $cssnr = 1;
        foreach ($random_product as $random_key => $random_value) {
          // display random review box
          $review_query = "select substring(reviews_text, 1, 60) as reviews_text from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . $random_product[$random_key]['reviews_id'] . "' and languages_id = '" . $_SESSION['languages_id'] . "'";
          $review_query = xtDBquery($review_query);
          $review = xtc_db_fetch_array($review_query,true);

          $review = htmlspecialchars($review['reviews_text']);
          $review = xtc_break_string($review, 15, '-<br />');

          //BOF - Dokuman - 2010-01-29 - show review stars in box
          //$box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br />';
          $box_content .= '<div align="center" class="bewert'.$cssnr.'"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product[$random_key]['products_id'] . '&reviews_id=' . $random_product[$random_key]['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product[$random_key]['products_image'], $random_product[$random_key]['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product[$random_key]['products_id'] . '&reviews_id=' . $random_product[$random_key]['reviews_id']) . '">' . $review . ' ..</a><br /><div align="center">' . xtc_image('templates/' . CURRENT_TEMPLATE . '/img/stars_' . $random_product[$random_key]['reviews_rating'] . '.gif' , sprintf(BOX_REVIEWS_TEXT_OF_5_STARS, $random_product[$random_key]['reviews_rating'])) . '</div>';
          //EOF - Dokuman - 2010-01-29 - show review stars in box
          $cssnr++;
        }
      } elseif ($product->isProduct()) {
        // Verhindern das Gäste oder Spamer bewerten können. www.aranowa.de
        if (isset($_SESSION['customer_id'])) {
          // display 'write a review' box
          $box_content = '<table border="0" cellspacing="0" cellpadding="2"><tr><td align="left" class="infoBoxContents"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link($product->data['products_id'],$product->data['products_name'])) . '">' . BOX_REVIEWS_WRITE_REVIEW .'</a></td></tr></table>';
        }
      }
     
    Hier kann man dann einstellen wieviele Bewertungen es sein sollen:

    Code: PHP  [Auswählen]
    $number_reviews = 3;
    Bitte gut testen und bescheid geben ob es funktioniert! :)

    Viele Grüße

    Franky

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #3 am: 16. September 2010, 08:26:29
    Hallo Franky,
    ich schreibe einmal in den Thread, was wir per PM geschrieben haben, damit auch andere teilhaben können bzw. vielleicht den Fehler finden:

    Hat leider noch nicht funktioniert. Es werden nun (egal wie viele Bewertungen man einstellt) ca. 10 Bewertungen angezeigt, z.T. mit Bild, z.T. nur Bild oder Text sowie nicht ladbare Grafiken mit der URL "0". Ich habe leider keine TEstumgebung, wo ich es vorführen könnte und in einem LiveShop kann man dies so natürlich nicht stellen.

    Sieht vielleicht jmd. den/die Programmierfehler, die das Durcheinander auslösen?

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #4 am: 16. September 2010, 09:21:25
    Hallo xtc-user09,

    ok also da ich ja gesagt hatte testen, Du jedoch keinen Testshop hast, teste ich das wohl.

    Hier mal die Anpassung:

    Hinter dem

    Code: PHP  [Auswählen]
      $number_reviews = 3;
    das einfügen:

    Code: PHP  [Auswählen]
      $random_product = array();
    Jetzt habe ich nur noch eine Sache: Es könnten Produktbewertungen doppelt angezeigt werden...
    Das kannst Du aber dann testen wenn es eingebaut ist weil es den Kunden nicht stört. Ich bin mir nicht ganz sicher ob es funktioniert das keine doppelt angezeigt werden.

    Wichtig auch noch:
    Das Bewertungslayout pro Bewertung muss in der stylesheet.css wie folgt gemacht werden:

    Code: CSS  [Auswählen]
    .bewertung1 {......}
    .bewertung2 {......}
    .bewertung3 {......}
    ....
     
    je nachdem wieviel Bewertungen man angibt
    Viele Grüße

    Franky

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #5 am: 16. September 2010, 12:13:47
    super - funktioniert! Es werden keine doppelten Bewertungen angezeigt. :)

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #6 am: 16. September 2010, 13:31:43
    Hallo xtc-user09,

    schön das es geht!

    @Tomcraft:
    Das wäre doch mal 'ne schöne Erweiterung für's Grundsystem!

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #7 am: 16. September 2010, 16:34:06
    Da gebe ich dir Recht!

    Kannst du das vielleicht nochmal zusammen tragen und daraus ein Modul-Paket erstellen in der "Bastelecke"?

    Das verschiebe ich dann in die Modulecke und setze es mal auf die Roadmap.

    Grüße

    Torsten

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #8 am: 16. September 2010, 18:32:59
    Hallo Torsten,

    ich weiß jetzt gerade nicht was Du mit Modulzusammenstellung meinst da es nur folgende Änderung ist:

    \templates\xtc5\source\boxes\reviews.php Z.29ff das ersetzen:

    Code: PHP  [Auswählen]
    $random_select = "select r.reviews_id, r.reviews_rating, p.products_id, p.products_image, pd.products_name from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd, " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = r.products_id ".$fsk_lock." and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
    if ($product->isProduct()) {
      $random_select .= " and p.products_id = '" . $product->data['products_id'] . "'";
    }
    $random_select .= " order by r.reviews_id desc limit " . MAX_RANDOM_SELECT_REVIEWS;
    $random_product = xtc_random_select($random_select);

    if ($random_product) {
      // display random review box
      $review_query = "select substring(reviews_text, 1, 60) as reviews_text from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . $random_product['reviews_id'] . "' and languages_id = '" . $_SESSION['languages_id'] . "'";
      $review_query = xtDBquery($review_query);
      $review = xtc_db_fetch_array($review_query,true);

      $review = htmlspecialchars($review['reviews_text']);
      $review = xtc_break_string($review, 15, '-<br />');

      //BOF - Dokuman - 2010-01-29 - show review stars in box
      //$box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br />';
       $box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br /><div align="center">' . xtc_image('templates/' . CURRENT_TEMPLATE . '/img/stars_' . $random_product['reviews_rating'] . '.gif' , sprintf(BOX_REVIEWS_TEXT_OF_5_STARS, $random_product['reviews_rating'])) . '</div>';
      //EOF - Dokuman - 2010-01-29 - show review stars in box

    } elseif ($product->isProduct()) {

      // Verhindern das Gäste oder Spamer bewerten können. <a target="_blank" href="http://www.aranowa.de" rel="nofollow">http://www.aranowa.de</a>
      if (isset($_SESSION['customer_id'])) {

     // display 'write a review' box
     $box_content = '<table border="0" cellspacing="0" cellpadding="2"><tr><td align="left" class="infoBoxContents"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link($product->data['products_id'],$product->data['products_name'])) . '">' . BOX_REVIEWS_WRITE_REVIEW .'</a></td></tr></table>';
      }
    }
     
    in das:

    Code: PHP  [Auswählen]
    // loop random array
    $number_reviews = 3; // Anzahl der Bewertungen
    $random_product = array();
    for ($i=1 ; $i<=$number_reviews; $i++) {
      $random_select1 = "select r.reviews_id, r.reviews_rating, p.products_id, p.products_image, pd.products_name from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd, " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = r.products_id ".$fsk_lock." and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'";
      if ($product->isProduct()) {
        $random_select2 = " and p.products_id = '" . $product->data['products_id'] . "'";
      }
      $random_select3 = " order by r.reviews_id desc limit " . MAX_RANDOM_SELECT_REVIEWS;

      $random_product[$i] = xtc_random_select($random_select1.$random_select2.$random_select3);

      $random_select2 .= " and r.reviews_id != '".$random_product[$i]['reviews_id']."'";
    }

    if (!$product->isProduct()) {
      $box_content = '';
      $cssnr = 1;
      foreach ($random_product as $random_key => $random_value) {
        // display random review box
        $review_query = "select substring(reviews_text, 1, 60) as reviews_text from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . $random_product[$random_key]['reviews_id'] . "' and languages_id = '" . $_SESSION['languages_id'] . "'";
        $review_query = xtDBquery($review_query);
        $review = xtc_db_fetch_array($review_query,true);

        $review = htmlspecialchars($review['reviews_text']);
        $review = xtc_break_string($review, 15, '-<br />');

        //BOF - Dokuman - 2010-01-29 - show review stars in box
        //$box_content = '<div align="center" class="bewert"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product['products_image'], $random_product['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product['products_id'] . '&reviews_id=' . $random_product['reviews_id']) . '">' . $review . ' ..</a><br />';
        $box_content .= '<div align="center" class="bewert'.$cssnr.'"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product[$random_key]['products_id'] . '&reviews_id=' . $random_product[$random_key]['reviews_id']) . '">' . xtc_image(DIR_WS_THUMBNAIL_IMAGES . $random_product[$random_key]['products_image'], $random_product[$random_key]['products_name']) . '</a></div><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_INFO, 'products_id=' . $random_product[$random_key]['products_id'] . '&reviews_id=' . $random_product[$random_key]['reviews_id']) . '">' . $review . ' ..</a><br /><div align="center">' . xtc_image('templates/' . CURRENT_TEMPLATE . '/img/stars_' . $random_product[$random_key]['reviews_rating'] . '.gif' , sprintf(BOX_REVIEWS_TEXT_OF_5_STARS, $random_product[$random_key]['reviews_rating'])) . '</div>';
        //EOF - Dokuman - 2010-01-29 - show review stars in box
        $cssnr++;
      }
    } elseif ($product->isProduct()) {
      // Verhindern das Gäste oder Spamer bewerten können. <a target="_blank" href="http://www.aranowa.de" rel="nofollow">http://www.aranowa.de</a>
      if (isset($_SESSION['customer_id'])) {
        // display 'write a review' box
        $box_content = '<table border="0" cellspacing="0" cellpadding="2"><tr><td align="left" class="infoBoxContents"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link($product->data['products_id'],$product->data['products_name'])) . '">' . BOX_REVIEWS_WRITE_REVIEW .'</a></td></tr></table>';
      }
    }
    In der \templates\xtc5\stylesheet.css kann man dann noch je nach Belieben die Bewertungskästchen verändern über:

    Code: CSS  [Auswählen]
    .bewertung1 {......}
    .bewertung2 {......}
    .bewertung3 {......}
    ....
    je nachdem wieviel Bewertungen hier eingestellt wurden:

    Code: PHP  [Auswählen]
    $number_reviews = 3;
    Meinst Du das mit Zusammenstellung als Modul?  :?

    Viele Grüße

    Franky

    [EDIT Tomcraft 17.09.2010: Anleitung als PDF angehängt.]

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #9 am: 16. September 2010, 22:44:37
    Okay, das habe ich in Beitrag 1 erst einmal so verlinkt.

    Grüße

    Torsten

    franky_n

    • Experte
    • Beiträge: 4.950
    ANLEITUNG: Mehrere random Bewertungen auf Startseite
    Antwort #10 am: 17. September 2010, 09:08:13
    Hallo Tomcraft,

    hier wie gewünscht ein PDF um es im Modulbereich zu positionieren.

    Viele Grüße

    Franky

    [EDIT Tomcraft 17.09.2010: PDF an den Beitrag der Anleitung angeheftet.]

    1 Antworten
    717 Aufrufe
    02. Januar 2022, 17:02:44 von Karl1
    2 Antworten
    4116 Aufrufe
    11. April 2011, 15:21:35 von karl
    6 Antworten
    4756 Aufrufe
    28. November 2011, 14:32:14 von Tomcraft
               
    anything