Ergebnis 1 bis 20 von 20

Thema: Personalliste entwickeln, Extension programmieren: Liste mit Bildausgabe

  1. #1
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Lächelndes Gesicht Personalliste entwickeln, Extension programmieren: Liste mit Bildausgabe

    Liebes Forum, ich entwickle zur Übung ein neues Modul, welches man immer wieder gebrauchen kann - eine Personalliste - also eine Darstellung der Mitarbeiter einer Firma. Hier ist das Beispiel: http://www.aquafit-power.ch/kursleiterinnen.html. Das habe ich mit einer Tabelle und CSS realisiert. Für die Redakteure ist das nix - die tun sich zu schwer damit. Ein kleines Modul mit Eingabefelder und einem Bild, das man per "fileTree" auswählen kann, wäre hier besser. Nach den Videotutorials für Conto 3 von Tristan Lins konnte ich eigentlich die Liste zusammenbauen. Aber jetzt kommts: für das Bild gebe ich im staff/templates/tl_staff.php beispielhaft folgendes Codefragement ein
    PHP-Code:
     <?php if ($staff['position'] != ""):echo '<li>' $staff['position'] .'</li>'; endif; ?>
    . Gezeigt wir der Inhalt des Feldes, sofern nicht leer. Für das Bild habe ich folgendes vorgesehen:
    PHP-Code:
     <li><?php echo $staff['staffimage']; ?></li>
    Daran muss ich noch arbeiten, das ist nur ein Versuch, um zu sehen, was da raus kommt.

    Wie habe ich das mit dem Bild im DCA geschrieben? So:
    PHP-Code:
    'staffimage' => array
                (
                
    'label' => &$GLOBALS['TL_LANG']['tl_staff']['staffimage'],
                
    'exclude' => true,
                
    'inputType' => 'fileTree',
                
    'eval' => array(
                    
    'filesOnly' => true,
                    
    'extensions' => $GLOBALS['TL_CONFIG']['validImageTypes'],
                    
    'fieldType' => 'radio',
                    
    'tl_class' => 'clr'
                
    ),
                
    'sql' => "varchar(255) NOT NULL default ''"
            
    ), 
    In der Ausgabe erscheint leider kein Link, sondern nur eine Nr. z.b. 144. staff.png
    Weiss jemand wie das geht oder wo ich vielleicht abgucken könnte? Eine Extension? Bin ich mit dem Bild auf dem richtigen Weg? Wie macht man das?
    Contao 3.1.2 installiert.

    Viele Dank für kleine Hilfe
    Angehängte Grafiken Angehängte Grafiken
    Geändert von hombo13 (01.10.2013 um 18:17 Uhr)

  2. #2
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    das ist die Bildernummer

    mit
    PHP-Code:
    \FilesModel::findByPk($this->feld)->path 
    wird daraus dann das Bild
    Geändert von magicsepp (03.10.2013 um 14:01 Uhr)

  3. #3
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von hombo13 Beitrag anzeigen
    Liebes Forum, ich entwickle zur Übung ein neues Modul, welches man immer wieder gebrauchen kann - eine Personalliste - also eine Darstellung der Mitarbeiter einer Firma.
    Diese Extension könntest du super mit der Erweiterung "MetaModels" umsetzen wenn du magst.

    Zu deiner Template-Ausgabe:
    Ich würde der Übersichtlichkeit wegen statt
    PHP-Code:
    <?php if ($staff['position'] != ""):echo '<li>' $staff['position'] .'</li>'; endif; ?>
    das so schreiben
    PHP-Code:
    <?php if ($staff['position'] != ""): ?>
        <li><?php echo $staff['position']; ?></li>
    <?php endif; ?>
    Wieso was rauskommt kannst du immer anschauen wenn du die Variable ausgibts.

    z.B.
    PHP-Code:
    var_dump($staff); 
    Wenn du alle Variablen des Templates sehen willst kannst du
    PHP-Code:
    $this->showTemplateVars() 
    oder
    PHP-Code:
    $this->dumpTemplateVars() 
    nutzen.


    Was steht denn in deinen Variablen?

  4. #4
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    Zitat Zitat von hombo13 Beitrag anzeigen

    Wie habe ich das mit dem Bild im DCA geschrieben? So:
    PHP-Code:
    'staffimage' => array
                (
                
    'label' => &$GLOBALS['TL_LANG']['tl_staff']['staffimage'],
                
    'exclude' => true,
                
    'inputType' => 'fileTree',
                
    'eval' => array(
                    
    'filesOnly' => true,
                    
    'extensions' => $GLOBALS['TL_CONFIG']['validImageTypes'],
                    
    'fieldType' => 'radio',
                    
    'tl_class' => 'clr'
                
    ),
                
    'sql' => "varchar(255) NOT NULL default ''"
            
    ), 
    In der Ausgabe erscheint leider kein Link, sondern nur eine Nr. z.b. 144. staff.png
    Weiss jemand wie das geht oder wo ich vielleicht abgucken könnte? Eine Extension? Bin ich mit dem Bild auf dem richtigen Weg? Wie macht man das?
    Contao 3.1.2 installiert.

    Viele Dank für kleine Hilfe
    Im Contao 3 hat ein Datenbank gestütztes Dateisystem und somit werden Bilder "nur" noch als ID referenziert. Dies hat den Vorteil, dass wenn du z.B. in der Dateiverwaltung ein Bild verschiebst, das System es merkt, bzw. dadurch sich die ID nicht ändert. Du musst somit in deinem Modul (nicht im Template) anhand der ID das entsprechende Bild laden.

    PHP-Code:
    $objFile = \FilesModel::findByPk($this->staffimage); 
    schau mal wie es im Newsmodul gemacht wird: https://github.com/contao/core/blob/...eNews.php#L155

    was die methode addImageToTemplate kann/macht findest du hier: https://github.com/contao/core/blob/...ller.php#L2458

  5. #5
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mal ne Zwischenfrage: wäre es nicht sinnvoller, an der C3.1-Kompatibilität von https://contao.org/de/extension-list...000009.de.html mitzuarbeiten?

    (ich habe schon verstanden, dass Du das 'zum Üben' benutzt)

  6. #6
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard Wo dieses PHP absetzen?

    Zitat Zitat von magicsepp Beitrag anzeigen
    das ist die Bildernummer

    mit
    PHP-Code:
    FilesModel::findByPk(feld
    wird daraus dann das Bild
    Danke dir schon mal für den Hinweis - ich weiss, ich bin nah dran, - in meinem Template möchte ich gerne folgendes schreiben:
    PHP-Code:
    ...
    <li><?php echo $staff['staffimage']; ?></li>
    <li><?php FilesModel::findByPk('staffimage') ; ?></li>
    <li>....
    ... aber hier kommt nichts raus. Ich weiss nicht, wo man das macht. Ich glaube schon im Template - also in meinem Fall in staff/modules/mod_staff_list.html5 oder?

  7. #7
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard

    Zitat Zitat von lucina Beitrag anzeigen
    Mal ne Zwischenfrage: wäre es nicht sinnvoller, an der C3.1-Kompatibilität von https://contao.org/de/extension-list...000009.de.html mitzuarbeiten?

    (ich habe schon verstanden, dass Du das 'zum Üben' benutzt)
    ja genau --- coole Extension - braucht es immer in grösseren Firmen.

  8. #8
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    Code:
    $objFile = \FilesModel::findByPk($this->staffimage);
    Der link zum Bild müsste dann in
    Code:
    $objFile->path
    sein.

  9. #9
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard

    Zitat Zitat von swsg Beitrag anzeigen
    Im Contao 3 hat ein Datenbank gestütztes Dateisystem und somit werden Bilder "nur" noch als ID referenziert. Dies hat den Vorteil, dass wenn du Du musst somit in deinem Modul (nicht im Template) anhand der ID das entsprechende Bild laden.

    PHP-Code:
    $objFile = \FilesModel::findByPk($this->staffimage); 
    Mein Modul - zugeschaut mitgebaut aus Tristan's Video schaut so aus:

    PHP-Code:
    <?php

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */




    class ModulestaffList extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'mod_staff_list';
     
        
    /**
         * Compile the current element
         */
            
            //      COMPILE: DIE COMPILE METHODE HOLT DIE DATEN 
            //      UND WEIST SIE DEM TEMPLATE ZU
        
    protected function compile()
        {
            
    /** @var \Contao\Database\Result $rs */
            
    $rs Database::getInstance()
                ->
    query('SELECT * FROM tl_staff ORDER BY lastname');
     
            
    $this->Template->staffs $rs->fetchAllAssoc();
        }
            
                 
    }

    ?>
    Und jetzt weiss ich nicht wo ich "$objFile = \FilesModel::findByPk($this->staffimage);" hinschreiben soll. Also nur diese Zeile?

  10. #10
    Contao-Fan Avatar von manfred
    Registriert seit
    08.05.2011.
    Ort
    Schwäbisch Gmünd
    Beiträge
    548

    Standard

    Hallo,

    wenn ich es richtig sehe, dann ist diese Erweiterung ggf. das richtige, damit auch redaktuere damit zurechtkommen.

    http://rocksolidthemes.com/de/contao...ntent-elements

    lg manfred

  11. #11
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    kannst mir die Erweiterung als zip schicken?

  12. #12
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    Zitat Zitat von hombo13 Beitrag anzeigen
    Mein Modul - zugeschaut mitgebaut aus Tristan's Video schaut so aus:

    PHP-Code:
    <?php

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */




    class ModulestaffList extends Module
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'mod_staff_list';
     
        
    /**
         * Compile the current element
         */
            
            //      COMPILE: DIE COMPILE METHODE HOLT DIE DATEN 
            //      UND WEIST SIE DEM TEMPLATE ZU
        
    protected function compile()
        {
            
    /** @var \Contao\Database\Result $rs */
            
    $rs Database::getInstance()
                ->
    query('SELECT * FROM tl_staff ORDER BY lastname');
     
            
    $this->Template->staffs $rs->fetchAllAssoc();
        }
            
                 
    }

    ?>
    Und jetzt weiss ich nicht wo ich "$objFile = \FilesModel::findByPk($this->staffimage);" hinschreiben soll. Also nur diese Zeile?
    Da musst du noch einiges anpassen:

    Die Variable $rs (Objekt) beinhaltet alle Datensätze. Diese schreibst du dann mit fetchAllAssoc in ein Array welches du dem Template zuweist. Auf diese Art hast du keine Möglichkeit die Daten anzupassen.

    Du musst das Objekt in einer Schlaufe durchlaufen und so jedem Datensatz das Bild zuweisen (Btw. Variablen sollten immer nach dem Typ benannt werden: $objRs oder noch besser $objStaff anstatt einfach $rs ).

    PHP-Code:

    while($objStaff->next())
    {
      ...

      if(
    $objStaff->staffimage != '')
      {
        
    $objFile = \FilesModel::findByPk($objStaff->staffimage);

        if (
    $objModel !== null && is_file(TL_ROOT '/' $objModel->path))
        {
          
    // mach mit der Datei etwas, denn die Datei ist vorhanden, ist eine Datei und nicht ein Verz. 
        
    }
       }

      ...


  13. #13
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    versuch mal im template folgendes:
    PHP-Code:
    <img src="<?php echo \FilesModel::findByPk($this->staffimage)->path?>">

  14. #14
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    Zitat Zitat von magicsepp Beitrag anzeigen
    versuch mal im template folgendes:
    PHP-Code:
    <img src="<?php echo \FilesModel::findByPk($this->staffimage)->path?>">
    Solches Zeugs würde ich lieber gleich lassen.

  15. #15
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    Zitat Zitat von swsg Beitrag anzeigen
    Solches Zeugs würde ich lieber gleich lassen.
    Für einen schnellen Test geht das, besser ist natürlich das vorherige abfragen und entsprechend ändern mit
    PHP-Code:
                   if (is_numeric($rs->staffimage))
                    {
                        
    $staff['staffimage'] = \FilesModel::findByPk($rs->staffimage)->path;
                    }
                    else
                    {
                        
    $staff['staffimage'] = $rs->staffimage;
                   } 
    schon allein wegen der kompatibilität zu ältern Versionen

  16. #16
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Ort
    Oberbayern
    Beiträge
    129

    Standard

    Hallo,

    ich bin fast am verzweifeln. Ich versuche mit folgendem Code mir ein Logo im Template anzuzeigen:

    PHP-Code:
    <?php if (!is_numeric($this->home_logo))
    //convert DB file ID into file path ($objFile->path) 
    $objFile = \FilesModel::findByPk($this->home_logo);
    $path=$objFile->path;?>
            
    <?php echo $this->home_logo?>
                    
    <?php endif; ?>

    Statt des Logos wird mir aber die Nummer 46 angezeigt. Ich habe schon alles versucht, auch aus dem Thread hier, komme aber nicht weiter.

    Wer kann mir sagen, wo der Fehler ist ?

    Danke für die Hilfe.

    Happy new year
    Thomas

  17. #17
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Ort
    Oberbayern
    Beiträge
    129

    Standard

    Hab es gerade selber gefunden, nachdem ich diese Zeile eingefügt habe :

    PHP-Code:
    <img src="<?php echo \FilesModel::findByPk($this->home_logo)->path?>">

    anstelle von :

    PHP-Code:
    <?php echo $this->home_logo?>

  18. #18
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Ich hoffe die Extension wird so niemals für alle veröffentlicht.

  19. #19
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    827

    Standard

    Die memberlist zusammen mit xtmembers und avatar, dann ist doch eigentlich alles fertig, oder?



    Gruß
    ChrMue

  20. #20
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Ort
    Oberbayern
    Beiträge
    129

    Standard

    So habe jetzt den Code aus den Templates heraus und als "function" in der Classes Datei angelegt. Dann dürfte es passen.

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
  •