Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

nur ein Bild aus einer Galerie darstellen

Begonnen von looki, 11. August 2010, 09:14:55

« vorheriges - nächstes »

looki

Hallo,
ich habe versucht, das Forum nach dem Thema ein Bild aus einer Galerie zu durchforsten, habe aber keine Antwort gefunden.
Besteht irgendwie die Moeglichkeit nur ein Bild aus einer Galerie zu verwenden.
Die Galerie soll auf einer Seite komplett dargestellt werden,aber auf einer anderen Inhaltsseite moechte ich nur ein Bild daraus verwenden.
Daher moechte ich es vermeiden, dieses Bild nochmals separat als Datei hochzuladen.
Vielleicht gibt es einen Trick?
Wenn nicht, dann komme ich halt nicht drumrum.

Danke fuer Hilfe.

Gruss Lars

Samson

#1
Da die Syntaxelemente bild, bildlinks und bildrechts nur auf Bilder aus den Kategorieverzeichnissen zugreifen können, kommst Du wohl nicht drumherum, direkt das Bild mit dem Syntaxelement html zu verlinken:
[html|<img src="URI" />Alternativ kannst Du Dir natürlich ein eigenes Syntaxelement bauen und das dann benutzen:
meinbild = <img src="{VALUE} />und dann in der Inhaltsseite aufrufen mit
[meinbild|URI]

looki

#2
ok,
das ist auch ne loesung ....

aber vielleicht wird das noch in einem plugin aktiviert, dass man nur ein Bild anzeigen kann ..


danke und gruss
Lars

looki

#3
ok, nun verwendete Loesung:

ich habe mir zwei eigene elemente generiert:
jeweils fuer das kleine und grosse bild aus der galerie

galeriebildkl = <img src="{BASE_URL}galerien/{DESCRIPTION}/vorschau/{VALUE}" />
galeriebildgr = <img src="{BASE_URL}galerien/{DESCRIPTION}/{VALUE}" />

dabei verwende ich beide moeglichen parameter.

dann kann ich live entscheiden, ob ich das grosse oder kleine bild haben moechte ...
Da spare ich die eigene Generierung der kleinen Bilder!!!  :D

ausserdem kann man dann auch gleich noch die Slimbox verwenden:

{SlimBox|[galeriebildkl=galerieName|bild.jpg],[galeriebildgr=galerieName|bild.jpg]}

Da fehlt mir jetzt nur noch, wie ich den namen drunter schreiben kann, aber das benoetige ich dann eher weniger dabei.

btw. kann man eigentlich mehr Parameter verwenden?
[meinElement|VALUE1,VALUE2] ???

Lars

HoMe

#4
ich finde die Idee super und habs gerade mal getestet.
Leider werden bei mir die Bilder nicht angezeigt :-(

Woran kann das denn liegen?

Gruß

HoMe
Schon gewusst: "Der Kopf ist rund, damit das Denken seine Richtung ändern kann!"

HoMe

#5
Fehler gefunden!
Wenn ich die benutzerdefinierte Syntax benutze, dann ergibt das:
[galeriebildgr|moziloCMS|1.jpg]
richtig ist aber (und dann funktionerit auch alles:
[galeriebildgr=moziloCMS|1.jpg]

Ist gut!

Danke

HoMe
Schon gewusst: "Der Kopf ist rund, damit das Denken seine Richtung ändern kann!"

looki

#6
noch besser:
ich habe mal ein wenig den code gehackt und zwei neue Seperatoren eingefuehrt:
-  "#" fuer kleine Bilder aus einer Galerie
-  "*" fuer grosse Bilder aus einer Galerie
jetzt kann ich :

[bild=kleines Bild Titel|galeryName#bild.jpg] -> nimmt das kleine Bild aus der Galerie
[bild=grosses Bild Titel|galeryName*bild.jpg] -> nimmt das grosse Bild aus der Galerie

das gute, das funktioniert auch gleich mit bildlinks und bildrechts und mann kann wieder einen Titel geben.

ABER,
es checkt weder, ob die Galerie existiert, noch das Bild!!!!
Ich bin nicht der PHP hacker, aber bei mir funktioniert es auf Anhieb.

dazu muss man noch den code im file cmsSyntax.php
aendern:
ab zeile 354:
$imgsrc = "";
                $error = false;
                $takeGalKl = false; //for galery small pic
                $takeGalGr = false; //for galery large pic

                $value = $specialchars->getHtmlEntityDecode($value);
                // Bei externen Bildern: $value NICHT nach ":" aufsplitten!
                if (preg_match($this->LINK_REGEX, $value)) {
                    $valuearray = $specialchars->replaceSpecialChars($value,false);
                }

                // Ansonsten: Nach ":" aufsplitten
                else {
                     //changes looki
                     $galerieKlSel   = '#';
                     $posKl = strpos($value, $galerieKlSel);
                     $galerieGRSel   = '*';
                     $posGr = strpos($value, $galerieGRSel);
                     
                     if($posKl === FALSE && $posGr === FALSE) {
                        //is for categorie
                        //take the old way
                        $valuearray = explode(":", $value);
                     } else if ($posGr === FALSE){
                        $valuearray = explode("#", $value);
                        $takeGalKl = true;
                     } else {
                        $valuearray = explode("*", $value);
                        $takeGalGr = true;
                     }
                     
                     if(count($valuearray) > 1) {
                        $valuearray[0] = $specialchars->replaceSpecialChars($valuearray[0],false);
                        $valuearray[1] = $specialchars->replaceSpecialChars($valuearray[1],false);
                     }
                }
                // Bild in aktueller Kategorie
                if (count($valuearray) == 1) {
                    // Bilddatei existiert
                    if (file_exists($CONTENT_DIR_REL.$cat."/".$CONTENT_FILES_DIR_NAME."/".$specialchars->replaceSpecialChars($value,false))) {
                        $imgsrc = $specialchars->replaceSpecialChars($URL_BASE.$CONTENT_DIR_NAME."/".$cat."/".$CONTENT_FILES_DIR_NAME."/".$specialchars->replaceSpecialChars($value,false),true);
                    }
                    // externes Bild
                    elseif (preg_match($this->LINK_REGEX, $value)) {
                        $imgsrc = $value;
                    }
                    // Bilddatei existiert nicht
                    else {
                        $error = true;
                        $content = str_replace ($match, $this->createDeadlink($value, $language->getLanguageValue1("tooltip_image_error_1", $value)), $content);
                    }
                }
                // Bild in anderer Kategorie
                // or inside galery
                else {
                     
                     if($takeGalGr == false && $takeGalKl == false) {
                        //take the old way - cathegory
                        $requestedcat = nameToCategory($valuearray[0]);
                        // Kategorie existiert
                        if ((!$requestedcat=="") && (file_exists($CONTENT_DIR_REL.$requestedcat))) {
                           // Bilddatei existiert
                           if (file_exists($CONTENT_DIR_REL.$requestedcat."/".$CONTENT_FILES_DIR_NAME."/".$valuearray[1])) {
                              $imgsrc = $specialchars->replaceSpecialChars($URL_BASE.$CONTENT_DIR_NAME."/".$requestedcat."/".$CONTENT_FILES_DIR_NAME."/".$valuearray[1],true);
                           }
                           // Bilddatei existiert nicht
                           else {
                              $content = str_replace ($match, $this->createDeadlink($valuearray[1], $language->getLanguageValue2("tooltip_image_error_2", $valuearray[1], $valuearray[0])), $content);
                              $error = true;
                           }
                        }
                        // Kategorie existiert nicht
                        else {
                           $content = str_replace ($match, $this->createDeadlink($valuearray[1], $language->getLanguageValue1("tooltip_link_category_error_1", $valuearray[0])), $content);
                           $error = true;
                        }
                     } else {
                        //changes looki
                        //take the galery
                        global $GALLERIES_DIR_NAME;
                        global $PREVIEW_DIR_NAME;
                        if($takeGalKl == true) {
                           //take the small picture
                           $requestedgal = $GALLERIES_DIR_NAME."/".$valuearray[0];
                           $imgsrc = $specialchars->replaceSpecialChars($URL_BASE."/".$requestedgal."/".$PREVIEW_DIR_NAME."/".$valuearray[1],true);
                        } else {
                           //take the large picture
                           $requestedgal = $GALLERIES_DIR_NAME."/".$valuearray[0];
                           $imgsrc = $specialchars->replaceSpecialChars($URL_BASE."/".$requestedgal."/".$valuearray[1],true);
                        }
                     }
                }

viel spass damit.

azett

#7
Um updatefähig zu bleiben, ist ein Plugin dem PHP-Hack definitiv vorzuziehen. So ein Plugin könnte ein zufälliges Bild aus der übergebenen Galerie anzeigen...etwa so: {RandomGalPic|Ostsee-Urlaub 2010}
Ich meine mich zu erinnern, daß es da schonmal einen Ansatz gab...?