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: Verzeichnisüberwachte Ausgabe im Content Manager

    ff

    • Neu im Forum
    • Beiträge: 12
    Hallo Ihr lieben,

    ich möchte einen Punkt im Menü haben, welcher Referenzen heißt. Wie gemerkt habe, kann ich leider nicht einfach eine php-Datei nehmen uns sie etwas tuen lassen. Also habe ich mich mal versucht in Smarty einzuarbeiten. Leider bin ich grade an dem Punkt an dem ich sagen muss: Ich brauch Hilfe!

    Was ich habe: Ein Verzeichnis in "media/content" welches "refereznen" heißt. Dort sind Bilder drin.
    Was ich will: Diese ausgeben, sodass ich einfach nur Bilder in den Ordner legen muss um diese automatisch anzuzeigen.

    Was ich bisher gecoded (oder auch gekotet) habe

    Die PHP-Datei welche durch den Content-Manager aufgerufen wird.
    Code: PHP  [Auswählen]
    <?php
    $module_smarty = new Smarty;

    $dir = "referenzbilder";
    $allimages = scandir($dir);

    foreach ($allimages as $images) {
           
            $imagesinfo = pathinfo($dir."/".$images);
           
            if ($images != "." && $images != ".."  && $images != "_notes" && $bildinfo['basename'] != "Thumbs.db") {               
                    $module_image[]=array('DIRNAME' => $imagesinfo['dirname'],
                                                              'BASENAME' => $imagesinfo['basename'],
                                                              'FILENAME' => $imagesinfo['filename']);      
            }
           
    }
    $module_smarty->assign('module_image',$module_image);
    echo $module_smarty->fetch(CURRENT_TEMPLATE.'/module/referenzen.html');
    ?>
     

    Datei: referenzen.html im Template/module/ Ordner
    Code: PHP  [Auswählen]
    <ul id="galerie">
        {foreach $module_image as $image}
            <li><img src="{$image.DIRNAME}"/"{$image.BASENAME}"  /></li>
        {/foreach}
    </ul>
     

    Liebe Grüße!

    Linkback: https://www.modified-shop.org/forum/index.php?topic=34668.0
    rechtstexte für onlineshop

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #1 am: 31. März 2016, 16:57:57
    Kann es sein, dass Du im falschen Verzeichnis arbeitest?

    Code: PHP  [Auswählen]
    $dir = "referenzbilder";
    $allimages = scandir($dir);

    Sollte das nicht eher so etwas wie
    Code: PHP  [Auswählen]
    $dir = DIR_FS_DOCUMENT_ROOT . 'media/content/referenzbilder/';
    $allimages = scandir($dir);

    ff

    • Neu im Forum
    • Beiträge: 12
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #2 am: 31. März 2016, 17:10:07
    Hi webald,

    danke für deine schnelle Rückmeldung. Leider passiert hier das gleiche. Ich erhalte ein leeres Browser-Fenster. Er gibt den <head>-Tag vollständig aus, lässt aber den <body>-Tag ohne Inhalt. Egal ob

    Code: PHP  [Auswählen]
    $dir = "referenzbilder";
    $allimages = scandir($dir);

    oder

    Code: PHP  [Auswählen]
    $dir = DIR_FS_DOCUMENT_ROOT . 'media/content/referenzbilder/';
    $allimages = scandir($dir);

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #3 am: 31. März 2016, 18:23:08
    das error reporting ist an?

    Whiteflash

    • Fördermitglied
    • Beiträge: 186
    • Geschlecht:
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #4 am: 31. März 2016, 18:59:40
    Hallo ff,

    also auf jeden Fall ist mal echo var_dump($allimages)."<hr>"; Pflicht, um zu checken, ob er überhaupt Bilder findet.

    Sofern welche im Array drin sind wird es aber spätesten bei der Ausgabe im Template ein Problem geben, denn deine Zeile [xml]<li><img src="{$image.DIRNAME}"/"{$image.BASENAME}"  /></li>[/xml] wird meiner Ansicht nach zu einem Image-Tag mit fehlerhaften (weil zu kurzen) src-Attribut führen - lass die beiden Quotes in der Mitte einfach weg, sonst sieht der Bildpfad im Browser nämlich wohl so aus src="'media/content/referenzbilder/" - und dann gibt's ein X statt dem Bild.

    Mal noch eine Frage am Rande:
    wie ruft dein Content-Manager die Datei auf? Normalerweise ist die Datei ja darauf ausgelegt, einfach den Datenbankinhalt für die entsprechende ID aufzurufen? Macht es Sinn die so umzubauen?

    Viel Erfolg, liebe Grüße!

    ff

    • Neu im Forum
    • Beiträge: 12
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #5 am: 31. März 2016, 21:00:23
    @Bonsai
    Nein. Wo kann ich dieses einstellen?

    @Whiteflash
    Danke zunächst für den Tipp mit echo var_dump($allimages)."<hr>"; - Da hätte man auch selbst drauf kommen können  :wallbash:

    Die Ausgabe lautet wie folgt:
    Code: PHP  [Auswählen]
    array(34) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(5) "1.jpg" [3]=> string(6) "10.JPG" [4]=> string(6) "11.JPG" [5]=> string(6) "12.JPG" [6]=> string(6) "13.JPG" [7]=> string(6) "14.JPG" [8]=> string(6) "15.JPG" [9]=> string(6) "16.JPG" [10]=> string(6) "17.JPG" [11]=> string(6) "18.JPG" [12]=> string(6) "19.JPG" [13]=> string(5) "2.JPG" [14]=> string(6) "20.JPG" [15]=> string(6) "21.JPG" [16]=> string(6) "22.JPG" [17]=> string(6) "23.JPG" [18]=> string(6) "24.JPG" [19]=> string(6) "25.JPG" [20]=> string(6) "26.JPG" [21]=> string(6) "27.JPG" [22]=> string(6) "28.JPG" [23]=> string(6) "29.JPG" [24]=> string(5) "3.JPG" [25]=> string(6) "30.JPG" [26]=> string(5) "4.JPG" [27]=> string(6) "40.JPG" [28]=> string(6) "41.JPG" [29]=> string(5) "5.JPG" [30]=> string(5) "6.JPG" [31]=> string(5) "7.JPG" [32]=> string(5) "8.JPG" [33]=> string(5) "9.JPG" }

    Also finden tut er das Verzeichnis.

    Wenn ich das Spiel mit dem Array für Smarty (echo var_dump($module_image)."<hr>";) mache kommt folgendes (Auch OK?)
    Code: PHP  [Auswählen]
    array(32) { [0]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "1.jpg" ["FILENAME"]=> string(1) "1" } [1]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "10.JPG" ["FILENAME"]=> string(2) "10" } [2]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "11.JPG" ["FILENAME"]=> string(2) "11" } [3]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "12.JPG" ["FILENAME"]=> string(2) "12" } [4]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "13.JPG" ["FILENAME"]=> string(2) "13" } [5]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "14.JPG" ["FILENAME"]=> string(2) "14" } [6]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "15.JPG" ["FILENAME"]=> string(2) "15" } [7]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "16.JPG" ["FILENAME"]=> string(2) "16" } [8]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "17.JPG" ["FILENAME"]=> string(2) "17" } [9]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "18.JPG" ["FILENAME"]=> string(2) "18" } [10]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "19.JPG" ["FILENAME"]=> string(2) "19" } [11]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "2.JPG" ["FILENAME"]=> string(1) "2" } [12]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "20.JPG" ["FILENAME"]=> string(2) "20" } [13]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "21.JPG" ["FILENAME"]=> string(2) "21" } [14]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "22.JPG" ["FILENAME"]=> string(2) "22" } [15]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "23.JPG" ["FILENAME"]=> string(2) "23" } [16]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "24.JPG" ["FILENAME"]=> string(2) "24" } [17]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "25.JPG" ["FILENAME"]=> string(2) "25" } [18]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "26.JPG" ["FILENAME"]=> string(2) "26" } [19]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "27.JPG" ["FILENAME"]=> string(2) "27" } [20]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "28.JPG" ["FILENAME"]=> string(2) "28" } [21]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "29.JPG" ["FILENAME"]=> string(2) "29" } [22]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "3.JPG" ["FILENAME"]=> string(1) "3" } [23]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "30.JPG" ["FILENAME"]=> string(2) "30" } [24]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "4.JPG" ["FILENAME"]=> string(1) "4" } [25]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "40.JPG" ["FILENAME"]=> string(2) "40" } [26]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(6) "41.JPG" ["FILENAME"]=> string(2) "41" } [27]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "5.JPG" ["FILENAME"]=> string(1) "5" } [28]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "6.JPG" ["FILENAME"]=> string(1) "6" } [29]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "7.JPG" ["FILENAME"]=> string(1) "7" } [30]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "8.JPG" ["FILENAME"]=> string(1) "8" } [31]=> array(3) { ["DIRNAME"]=> string(73) "/www/htdocs/w012e6cf/deinstuhl.code-mesa.com/media/content/referenzbilder" ["BASENAME"]=> string(5) "9.JPG" ["FILENAME"]=> string(1) "9" } }

    Ich habe in dem Content-Manager einen Eintrag hinzugefügt und einem Menü/Box zugewiesen. Und um den Inhalt dort anzeigen zu lassen, habe ich unter "Datei Wählen:" gesagt, dass er die "referenzen.php" nehmen soll. Die führt dieser ja wie ich jetzt sehe auch korrekt aus, zeigt aber nichts an. Mache ich in der Template-Datei etwas falsch?

    sonic

    • Neu im Forum
    • Beiträge: 15
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #6 am: 31. März 2016, 22:58:42
    Im DIRNAME hast Du ja den absoluten Dateipfad vom Server und nicht den (relativen) Pfad auf der Webseite. Bei DIRNAME müsste ja nur der Pfad zwischen domain.de und dateiname stehen. Da der aber doch statisch ist, kannst Du den gleich im Template feste einbauen und musst nicht DIRNAME nehmen.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #7 am: 31. März 2016, 23:28:34
    Hallo ff,

    du kannst mal folgendes versuchen:

    Ersetze diesen Code

    Code: XML  [Auswählen]
    <ul id="galerie">
        {foreach $module_image as $image}
            <li><img src="{$image.DIRNAME}"/"{$image.BASENAME}" /></li>
        {/foreach}
    </ul>
     

    mit diesem

    Code: XML  [Auswählen]
    <ul id="galerie">
        {foreach item=image from=$module_image}
            <li><img src="{$image.DIRNAME}/{$image.BASENAME}" alt="" /></li>
        {/foreach}
    </ul>
     

    und ersetze diesen Code

    Code: PHP  [Auswählen]
    $dir = DIR_FS_DOCUMENT_ROOT . 'media/content/referenzbilder/';

    mit diesem

    Code: PHP  [Auswählen]
    $dir = DIR_WS_CATALOG . 'media/content/referenzbilder/';

    PS:
    Code: XML  [Auswählen]
    {foreach $module_image as $image}

    obige Syntax ist in Smarty2 nicht erlaubt, siehe Link

    http://www.smarty.net/docsv2/de/language.function.foreach.tpl

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #8 am: 01. April 2016, 12:21:03
    Nachtrag:

    Diese Änderung aus meinem letzten Beitrag wird wohl nicht funktionieren

    Code: PHP  [Auswählen]
    $dir = DIR_WS_CATALOG . 'media/content/referenzbilder/';

    aber wenn man anstelle von diesem Codes aus deinem ersten Beitrag

    Code: PHP  [Auswählen]
    $module_image[]=array('DIRNAME' => $imagesinfo['dirname'],

    diesen einsetzt

    Code: PHP  [Auswählen]
    $module_image[]=array('DIRNAME' => strstr(HTTP_SERVER, '//').strstr($imagesinfo['dirname'], DIR_WS_CATALOG),

    sollte es eigentlich funktionieren, hoffe ich.

    Hintergrund:
    Für das Source-Attribut des Img-Tag's braucht man die Webadresse für das Bild und nicht den Serverpfad (document root).

    Gruss
    Hanspeter

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #9 am: 01. April 2016, 13:53:57
    Code: PHP  [Auswählen]
    $reference_dir = DIR_FS_DOCUMENT_ROOT . 'media/content/references';
    $allimages = scandir($reference_dir);
    $reference_img = array();
    foreach($allimages as $ffile){
            if($ffile != '.' && $ffile != '..'){
                    $infarray=pathinfo($ffile);
                    if(strtolower($infarray['extension'])=='jpg' || strtolower($infarray['extension'])=='gif') {
                            $reference_img[] = HTTP_SERVER.DIR_WS_CATALOG.'media/content/references/'.$ffile;
                            }
                    }
            }
    print_r($reference_img);

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #10 am: 01. April 2016, 16:09:40
    Ich fand die Idee mit den Referenzbildchen am Anfang ganz gut und wollte da erst ein kleines Modul zu basteln. Aber nur Bilder einlesen ist nicht gut. Eigentlich gehören zu Referenzen noch Sachen wie Beschreibung, gezeigte/benutzte Produkte, Links, Datum, .... Das ist dann wohl doch eher etwas bei dem eine Datenbank besser ist, v. a. wenn es dann auch noch mehrsprachig wird. Das war es mit auf die Schnelle...

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Verzeichnisüberwachte Ausgabe im Content Manager
    Antwort #11 am: 04. April 2016, 11:55:53
    Code: PHP  [Auswählen]
     if($ffile != '.' && $ffile != '..'){

    Ich würde glob() anstelle von scandir() benutzen, dürfte schneller sein und ist auch code-technisch um Längen kürzer.
    z.B.:
    Code: PHP  [Auswählen]
    $allimages = glob("$reference_dir/*.{jpg,gif,png}", GLOB_BRACE);

    Gruß,
    noRiddle
    2 Antworten
    1876 Aufrufe
    01. Dezember 2010, 18:47:08 von cschiller
    3 Antworten
    5922 Aufrufe
    26. Februar 2012, 23:46:10 von friloo
               
    anything