Ergebnis 1 bis 4 von 4

Thema: [isotope] Anzahl Bestellungen auf der Welcome-Seite im Backend anzeigen

  1. #1
    Contao-Nutzer Avatar von cb-schwimmen
    Registriert seit
    21.04.2011.
    Beiträge
    29

    Standard [isotope] Anzahl Bestellungen auf der Welcome-Seite im Backend anzeigen

    Hey,

    ich hab mich mal hingesetzt und versucht eine kleine Meldung für die Welcome-Seite im Backend einzurichten, in dem die Anzahl der Bestellungen im Isotope-Shop innerhalb der letzten X Tage angezeigt werden.

    Dazu habe ich das Template "be_welcome.tpl" angepasst:

    PHP-Code:
    <h1 id="tl_welcome"><?php echo $this->welcome?></h1>

    <div id="tl_soverview">

    <div id="tl_messages">
      <h2><?php echo $this->systemMessages?></h2>
    <?php if ($this->tasksDue): ?>
      <p class="tl_task_due"><a href="contao/main.php?do=tasks"><?php echo $this->tasksDue?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->tasksNew): ?>
      <p class="tl_task_new"><a href="contao/main.php?do=tasks"><?php echo $this->tasksNew?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->tasksCur): ?>
      <p class="tl_task_reg"><a href="contao/main.php?do=tasks"><?php echo $this->tasksCur?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->update): ?>
      <p class="tl_update"><a href="contao/main.php?do=maintenance"><?php echo $this->update?></a></p>
    <?php endif; ?>





    <?php

    // Beginn Anzeige "Anzahl Bestellungen"

    /**
    *
    * [ !! Verwendung auf eigene Gefahr !! ]

    * Meldung über neue Bestellungen
    * Version 0.1
    *
    */

    $this->import('BackendUser''User');

    if (
    $this->User->isAdmin) {

      
    $this->import('Database');

      
    $result $this->Database->execute("SELECT * FROM tl_iso_orders ORDER BY date DESC");

      
    $tage 150;
      
    $zeitjetzt time();

      
    $anz_bestellungen =0;
      while (
    $result->next() && ($result->date $tage*24*60*60$zeitjetzt)) {
        
    $anz_bestellungen $anz_bestellungen+1;
      }

      if (
    $anz_bestellungen 0) {
        echo 
    "<p><a href=\"contao/main.php?do=iso_orders\" style=\"background:url('system/modules/isotope/html/icon-orders.gif') no-repeat;padding-left:20px;margin:2px 2px 2px 6px;\"><b>".$anz_bestellungen." Bestellungen</b> in den letzten ".$tage." Tagen</a></p>";
      }
    }

    // Ende Anzeige "Anzahl Bestellungen"

    ?>





    <?php if ($this->lastLogin): ?>
      <p class="tl_update"><?php echo $this->lastLogin?></p>
    <?php endif; ?>



    </div>
    [schnippschnapp .... hier geht das Template noch weiter]
    Die Anzeige wird nur für Admins und wenn mindestens 1 Bestellung in den letzten $tage Tagen vorliegt angezeigt.

    Was meint ihr? Gute Idee?

    Es ist das erste mal, dass ich mit der Contao-API arbeite. Über Hinweise für Verbesserungen bin ich jederzeit dankbar.
    mein erstes Contao-Projekt: http://www.psvcottbus-schwimmen.de - für Anregungen, Kritiken und Tipps bin ich jederzeit dankbar.

  2. #2
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    385

    Standard

    Also vom Code her ist das keine gute Idee. Stell dir vor in der Tabelle liegen 10 Mio. Bestellungen. Ergebnis: Du würdest MySQL dazu bringen dir alle 10. Mio von der Festplatte zu lesen, obwohl du die Daten nicht brauchst. Wenn der MySQL-Server dann auch noch nicht auf dem gleichen Server läuft wie php, dann dürfte die Bandbreite zwischen den Servern das ganze noch ausbremsen. Wenn du die SQL-Anweisung so anpasst, dass er nur die interessanten Datensätze ausliest, dürfte dies der Performance schon gut tuen. Sprich die Abfrage auf ein bestimmtes Datum eingreinzen. Als zweite Optimierung: Count(*) verwenden...

    Ansonsten: Wenn du Sprache ausgibst, solltest du auch Sprachdateien verwenden...

  3. #3
    Contao-Nutzer Avatar von cb-schwimmen
    Registriert seit
    21.04.2011.
    Beiträge
    29

    Standard

    gut, dass da noch jemand über den Code schaut. Du hast recht, da geht noch was besser zu machen.

    Version 0.2, getestet auf Contao 2.9.5

    PHP-Code:
    <h1 id="tl_welcome"><?php echo $this->welcome?></h1>

    <div id="tl_soverview">

    <div id="tl_messages">
      <h2><?php echo $this->systemMessages?></h2>
    <?php if ($this->tasksDue): ?>
      <p class="tl_task_due"><a href="contao/main.php?do=tasks"><?php echo $this->tasksDue?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->tasksNew): ?>
      <p class="tl_task_new"><a href="contao/main.php?do=tasks"><?php echo $this->tasksNew?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->tasksCur): ?>
      <p class="tl_task_reg"><a href="contao/main.php?do=tasks"><?php echo $this->tasksCur?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->update): ?>
      <p class="tl_update"><a href="contao/main.php?do=maintenance"><?php echo $this->update?></a></p>
    <?php endif; ?>
    <?php 
    if ($this->lastLogin): ?>
      <p class="tl_update"><?php echo $this->lastLogin?></p>
    <?php endif; ?>




    <?php
    // Beginn Anzeige "Anzahl Bestellungen" 
    /**
    *
    * Meldung über neue Bestellungen
    * Version: 0.2
    *
    */
    $this->import('BackendUser''User');

    if (
    $this->User->isAdmin) {

      
    $this->import('Database');

      
    $tage 60;


      
    $result $this->Database->execute("SELECT Count(*) as anz FROM tl_iso_orders WHERE date+".$tage."*24*60*60 >".time());

      
    $anz_bestellungen $result->anz;

      if (
    $anz_bestellungen 0) {
        echo 
    "<div style=\"margin:2px 2px 2px 6px;\"><a href=\"contao/main.php?do=iso_orders\" style=\"background:url('system/modules/isotope/html/icon-orders.gif') no-repeat;padding-left:20px;\"><b>".$anz_bestellungen." Bestellungen</b> in den letzten ".$tage." Tagen</a></div>";
      }
    }
    // Ende Anzeige "Anzahl Bestellungen"

    ?>





    <?php if ($this->lastLogin): ?>
      <p class="tl_update"><?php echo $this->lastLogin?></p>
    <?php endif; ?>



    </div>
    [schnippschnapp .... hier geht das Template noch weiter]
    Geändert von andreas.schempp (18.07.2011 um 07:35 Uhr)
    mein erstes Contao-Projekt: http://www.psvcottbus-schwimmen.de - für Anregungen, Kritiken und Tipps bin ich jederzeit dankbar.

  4. #4
    Contao-Nutzer Avatar von cb-schwimmen
    Registriert seit
    21.04.2011.
    Beiträge
    29

    Standard

    verdammt, da fehlt noch vor der Zeile "// Beginn Anzeige "Anzahl Bestellungen" " das öffnende php-tag <?php

    leider kann ich den Beitrag nicht mehr ändern
    mein erstes Contao-Projekt: http://www.psvcottbus-schwimmen.de - für Anregungen, Kritiken und Tipps bin ich jederzeit dankbar.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •