Seite 1 von 1

Frage zum Modul "Bildwechsel"

Verfasst: Di 29. Sep 2009, 09:38
von yui
Tach zusammen,

in meiner ersten Contenidoinstallation von 2004 habe ich ein Modul verwendet, welches ich so hier nicht mehr finde. Sinn war es, beim Laden der Seite ein Bild aus einem Ordner nach Zufall anzuzeigen.

Das Modul sieht so aus:

Code: Alles auswählen

<?php 
$folder=opendir("upload/Kraeuterbilder/"); 
while ($file = readdir($folder)) 
    $names[count($names)] = $file; 
closedir($folder);
sort($names);
$tempvar=0;
for ($i=0;$names[$i];$i++){
    $ext=strtolower(substr($names[$i],-4));
    if ($ext==".jpg"||$ext==".gif"||$ext==".jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
srand ((double) microtime() * 10000000);
$rand_keys = array_rand ($names1, 2);
$xmImg="upload/Kraeuterbilder/".$names1[$rand_keys[0]]; 
$dimensions = GetImageSize($xmImg); 
if (isset($pic)){header ("Location: $xmImg");}
else {echo "<img src=\"$xmImg\" $dimensions[3]>";}
?>
Auf der Webseite wird dann dieser ausgegeben:

Code: Alles auswählen

<img src="upload/Kraeuterbilder/" >
also ohne das Bild. Das kuriose ist, auf der besagten ursprünglichen Installation, jetzt natürlich auf 4.8.12 aktualisiert, läuft das Modul richtig.

Hat jemand einen Tipp, woran das liegen kann?

Vielen Dank und schöne Grüße
yui

Re: Frage zum Modul "Bildwechsel"

Verfasst: Di 29. Sep 2009, 10:47
von Oldperl
Hallo yui,

also so wie du das Modul hier gepostet hast, dürfte es garnicht laufen, da im benötigten Array wohl nichts drin ist.

Code: Alles auswählen

for ($i=0;$names[$i];$i++){
$i soll hier von 0 (null) bis wohin zählen? Da sollte wohl eher ein count(Array) stehen.

Wenn es auf einer Installation läuft und auf der anderen nicht, kannst du ja mal einfach ein Diff zwischen den beiden Modulen machen.

Gruß aus Franken

Ortwin

Re: Frage zum Modul "Bildwechsel"

Verfasst: Do 1. Okt 2009, 07:31
von Liquidstone
Ist das vielleicht was für dich?
Wenn du den "Ticker" weg lässt, ist es ein Script dass was du suchst

http://forum.contenido.org/viewtopic.php?f=51&t=24127

oder hier noch mal
Code als *.xml speichern

Code: Alles auswählen

<?xml version="1.0" encoding="ISO-8859-1"?>
<module><name>Zufallsbild</name>
<description>Zufallsbild mit Skalierung

Autor: Florian Born
Version: 1.2</description>
<type>Content</type>
<input/>
<output><?php
$bilder = glob( "{"deinen uploadordner eintragen"/*.jpg,"ein weiterer ordner"/*.jpg}", GLOB_BRACE );
shuffle( $bilder );
$bildinfo = getimagesize( $bilder[0] );
$width = $bildinfo[0];
$height = $bildinfo[1];
if ($width > 220)
{
 $width = 220;
 $percent = ($bildinfo[0] / $width);
 $height = ($bildinfo[1] / $percent);
}
$sScaledImage = cApiImgScale($bilder[0], $width, $height);
echo '<a href=""deine url mit http"/front_content.php?idart=213&idcat=134&image='.$bilder[0].'"><img src="' .$sScaledImage .'" alt="" border="0"></a>';
?></output>
</module>
Die "" bei den nötigen Änderungen sind zu entfehrnen!

Re: Frage zum Modul "Bildwechsel"

Verfasst: So 6. Feb 2011, 12:20
von Gesta Treverorum
Hallo,

ich bin neu hier und auch recht neu im Umgang mit Contenido. Meine bisherige Nutzung hat sich auf die Erstellung von Texten mit Bildern usw. sprich dem Inhalt der Seite beschränkt.

Nun möchte ich aber auch das ein oder andere Modul einstellen bzw. auch mal was am Template machen.

Als erstes wollte ich das oben genannte Zufallsbild einbauen.

Ich habe die *.xml Datei importiert. Diese wurde dann in den Output geschrieben und ich habe ein bisschen was "eingetragen".
Ich bin mir aber nicht sicher, ob es so richtig ist.

Ich poste den Output am besten mal hier:

Code: Alles auswählen

<?php
$bilder = glob( "{bildergalerie/*.jpg}", GLOB_BRACE );
shuffle( $bilder );
$bildinfo = getimagesize( $bilder[0] );
$width = $bildinfo[0];
$height = $bildinfo[1];
if ($width > 220)
{
 $width = 220;
 $percent = ($bildinfo[0] / $width);
 $height = ($bildinfo[1] / $percent);
}
$sScaledImage = cApiImgScale($bilder[0], $width, $height);
echo '<a href="http//www.gesta-treverorum.de/front_content.php?idart=213&idcat=134&image='.$bilder[0].'"><img src="' .$sScaledImage .'" alt="" border="0"></a>';
?>
Als Test zunächst sollte das Zufallsbild hier:
www.gesta-treverorum.de
unter "Über uns" erscheinen. Wenn ich das zum funktionieren gebracht hätte wollte ich es in die Startseite übernehmen.

Bei Klick auf "Über Uns" erscheint nun aber eine leere Seite mit dem einzigen Menüpunkt "Webseite", mit dem ich wieder auf den Anfang gelange.

Was habe ich falsch gemacht?

Würde mich sehr über eure Hilfe freuen, da die Seite schon geraume Zeit brach liegt und der, der mir da eigentlich helfen wollte scheinbar keine Zeit mehr für mich hat :(

Viele Grüße,
Daniel

Re: Frage zum Modul "Bildwechsel"

Verfasst: Mo 9. Mai 2011, 22:20
von homtata
Hallo,

ich hab diese Funktion neulich auch benötigt und bin so vorgegangen (Code ist für hier leicht geändert, da er in einem anderen Zusammenhang als Funktion gebraucht wurde):

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: Output a random image from preset directory
*
* @version 1.0.0
* @author Viktor Lehmann <tone2tone.com>
*
* {@internal
* created 2011-04-28
* }}
*
* $Id$
*/

cInclude("includes", "functions.api.images.php");
cInclude ("frontend", "includes/functions.getimagedesc.php");

$bRecursiv = false;
$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "logos_kunden/";

$bilder = scanDirectory($sPath, $bRecursive);
shuffle( $bilder );

#Default settings
$img_width = 280;
$img_height = 75;

#Scale image
$sScaledImage = capiImgScale($bilder[0], $img_width, $img_height, false, false, 10, false);

# VL Medienname auslesen ab 4.8.8
   $medieninfo = ig_getImageDescription($bilder[0]);
   $str_media_name       = $medieninfo ['media'];
   $str_file_description = $medieninfo ['desc'];

$randomimage = '<img src="' .$sScaledImage .'" alt="'.$str_media_name.'" title="'.$str_media_name.'" border="0">';

?>
Das setzt voraus, dass der Ordnername "logos_kunden" oben händisch angepasst wird an den gewünschten Uploadordner.
Außerdem sollte zum Auslesen der Dateieigenschaften folgender Code in eine neu anzulegende Datei namens includes/functions.getimagedesc.php geschrieben werden:

Code: Alles auswählen

<?php
/**
 * Project: Viktor Lehmann lagert Dateifragmente aus
 * Contenido Content Management System
 * 
 * Description: Ausgelagerte Funktion zum Ermitteln der Bildbeschreibung
 * Ausgelagert, damit der mehrfache Aufruf pro Seite nicht zum Funktionsfehler führt
 * Die Datei wird in die Module nur noch mit require_once eingebunden.
 * 
 * Requirements: 
 * @con_php_req 5
 * 
 *
 * @package    Contenido Backend <Area>
 * @version    0.1
 * @author     unknown
 * @copyright  four for business AG <www.4fb.de>
 * @license    http://www.contenido.org/license/LIZENZ.txt
 * @link       http://www.4fb.de
 * @link       http://www.contenido.org
 * @since      file available since contenido release <Contenido Version>
 * @deprecated file deprecated in contenido release <Contenido Version>
 * 
 * 
 */

function ig_getImageDescription($idupl) {

    global $cfg, $cfgClient, $db, $client, $lang;

    $cApiClient= new cApiClient($client);
    $language_separator= $cApiClient->getProperty('language', 'separator');
    if ($language_separator == "") {
        //Sanity, if module used in client without set client setting
        $language_separator= "§§§";
        $cApiClient->setProperty('language', 'separator', $language_separator);
    }
    if (is_numeric($idupl)) {
        //ID is a number
        $query= "SELECT description FROM " . $cfg["tab"]["upl"] . " WHERE idupl = " . $idupl;
    } else {
        //ID is a string
        $path_parts= pathinfo($idupl);
        $upload= $cfgClient[$client]['upl']['frontendpath'];
        $len= strlen($upload);
        $pos= strpos($idupl, $upload);
        $dirname= substr($path_parts['dirname'], $pos + $len) . '/';
        $query = "SELECT m.description, m.medianame, m.internal_notice, m.keywords, m.copyright 
        FROM " . $cfg["tab"]["upl"] . " u INNER JOIN " . $cfg["tab"]["upl_meta"] . " m
        ON u.idupl = m.idupl AND m.idlang = " . $lang . "
        WHERE (u.dirname = '" . $dirname . "') AND (u.filename='" . $path_parts['basename'] . "') AND (u.filetype='" . $path_parts['extension'] . "')";

    }
    $db->query($query);
    if ($db->next_record()) {
        return array("desc"  => htmlspecialchars(urldecode($db->f("description"))),
                     "media" => htmlspecialchars(urldecode($db->f("medianame"))),
                     "internal" => htmlspecialchars(urldecode($db->f("internal_notice"))),
                     "keywords" => htmlspecialchars(urldecode($db->f("keywords"))),
                     "copyright" => htmlspecialchars(urldecode($db->f("copyright")))
                     );
    } else {
        return '';
    }
}
?>
Grüße an alle