Probleme mit Views-Slideshow
am 23.03.2013 - 14:39 Uhr in
Hi,
ich versuche eine kleine Slideshow mit Views zu machen die folgendes Darstellen soll:
1. Bild aus einem Inhalt
2. Exifdaten per php-script
Für die slideshow:
2x das Image-Felder hinzugefügt (eins für thumbs der slideshow und eines für die "normalen" slideshowbilder)
Dazu habe ich ein global-php-feld erstellt mit folgendem Output-code:
<?php
$image = "http://www.xxx.de/sites/default/files/$row->filename";
$exif = exif_read_data($image, 0, true);
if (empty($exif['IFD0']['Model'])) {
echo "Kamera: Keine Angaben verfügbar";
} hin
else { echo "Kamera: " . $exif['IFD0']['Model'] . "\n";
}
?>
Man sieht dass ich dafür den filename des Bildes brauche. Deshalb habe ich die Beziehung: Dateiverwendung: Datei hinzugefügt, um dann das Feld Datei: Dateiname hinzufügen zu können.
Hier mal eine Übersicht:
Die Slideshow und die Ausgabe des php-codes funktioniert soweit, das Problem ist aber, dass die Bilder der Slideshow doppelt oder mehrfach vorkommen. Sprich das gleiche Bild wiederholt sich erst 2 oder mehrere Male bis das Nächste kommt. Gibts da ne Möglichkeit das irgendwie so zu filtern, dass ein Bild der slideshow nicht mehrmals vorkommen darf?
hoffe mir kann jemand helfen!
LG
Anhang | Größe |
---|---|
views-slideshow.JPG | 47.22 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Das entsteht häufig durch die
am 24.03.2013 - 15:31 Uhr
Das entsteht häufig durch die Beziehung (Dateiverwendung).
Eventuell mal die "Zusammenfassung" verwenden (unter ANDERE).
Ansonsten mal deine View "umkehren".
Praktisch deine Bilder als Ausgangsbasis nehmen und eine Beziehung zu Nodes erstellen.
Hast du pro Node mehrere Bilder hochgeladen?
Verstehe den BeitragsID Kontext nicht ganz.
Hast du eine dynamsiche Slideshow?
WEBTRANSFORMER
Goekmen schrieb Das entsteht
am 24.03.2013 - 16:11 Uhr
Das entsteht häufig durch die Beziehung (Dateiverwendung).
Eventuell mal die "Zusammenfassung" verwenden (unter ANDERE).
Ansonsten mal deine View "umkehren".
Praktisch deine Bilder als Ausgangsbasis nehmen und eine Beziehung zu Nodes erstellen.
Hast du pro Node mehrere Bilder hochgeladen?
Verstehe den BeitragsID Kontext nicht ganz.
Hast du eine dynamsiche Slideshow?
Hi,
wenn ich "Zusammenfasung" verwende, zeigt er leider gar keine Slideshow mehr an.
Die Umkehrung die du meinst versteh ich nicht so ganz, da ich ja schon meine Bilder (alle vom Image-Feld exif-slider) als Ausgangsbasis nehme und dann über den Kontextfilter Datei-ID nach jedem einzelnen Node filtere, so dass er nicht alle Bilder von diesem Image-Feld nimmt, sondern immer nur die des gerade aufgerufenen Node.
Das Prinzip ist so: ich hab einen Inhaltstyp erstellt und je Node von diesem Typ kann man über das Image-Feld (exif-slider) mehrere Bilder uploaden die dann als Slideshow angezeigt werden sollen.
Was genau ist eine dynamische slideshow? Ich verwende die ganz normale Views Slideshow und als pager-typ das jcarousel.
LG
Deine mehrfachen Ergebnisse
am 24.03.2013 - 16:23 Uhr
Deine mehrfachen Ergebnisse entstehen durch das Mehrfachupload des Bildfeldes und der Beziehung.
Am besten pro Bild ein Node nehmen und die dann zu einer Slideshow verknüpfen.
WEBTRANSFORMER
gibts da wirklich keinen
am 24.03.2013 - 16:48 Uhr
gibts da wirklich keinen anderen Weg? Mein Ziel ist halt, dass ein User mehrere Bilder uploadet und diese dann als Slideshow dargestellt werden. Extra ein Node für jedes Bild anzulegen wäre da je sehr umständlich?!
LG
Vielleicht gibt es einen
am 24.03.2013 - 17:29 Uhr
Vielleicht gibt es einen anderen Weg, mir würde aber kein weiterer einfallen.
Eventuell auf Views verzichten und ein Slideshow Modul benutzen was Bilder innerhalb eines Nodes unterstützt.
Dort könntest du ja die Ausgabe auch selber verändern (Field Template des Bildfeldes überschreiben und deinen php Code ausführen).
Würde vermutlich sogar die Performance steigern.
WEBTRANSFORMER
Habe auf deinen Rat gehört
am 25.03.2013 - 20:17 Uhr
Habe auf deinen Rat gehört und mir das Module Gallery formatter genommen, dies zeigt die Bilder eines images-felds als Slideshow.
Nun habe ich mir die .tpl Datei des Modules angeschaut und wollte meinen Code einfügen. Leider bin ich in php nicht gerade der Crack und anhand des .tpl Codes wird mir nicht klar wo ich den image path oder filename, des grade gezeigten Bildes herbekomme. Kannst du mir vielleicht helfen und einen Blick in die .tpl Datei werfen und mir sagen wie dort die image url oder image filename definiert sind, so dass ich sie mir ausgeben kann.
Ich hänge die Dateien des Modules mal an:
Ich bin leider auch kein php
am 25.03.2013 - 20:28 Uhr
Ich bin leider auch kein php Crack und beherrsche nur ein paar Basics.
Würde dir vorschlagen erst mal das eigentlich Bildfeld anzuschauen. Praktisch die Drupal field.tpl.php Vorlage und die overriden.
http://drupal.org/node/1089656
field--[type|name[--content-type]|content-type].tpl.php
base template: field.tpl.php
Theme hook suggestions are made based on these factors, listed from the most specific template to the least. Drupal will use the most specific template it finds:
field--field-name--content-type.tpl.php
field--content-type.tpl.php
field--field-name.tpl.php
field--field-type.tpl.php
Note that underscores in a Field's machine name are replaced by hyphens. Also remember to include "field-" in custom field names, e.g: field--field-phone.tpl.php.
Ansonsten kann man ein externes jQuery Gallery Plugin einsetzen und auf das Modul verzichten.
Dann sollte es einfach sein oder?
Eventuell hilft dir das auch weiter:
http://agerson.net/content/displaying-field-image-image-style-nodetplphp...
http://geeksandgod.com/forums/dynamic-website-forums/all-about-drupal/di...
WEBTRANSFORMER
die slidehow funkioniert auch
am 26.03.2013 - 12:57 Uhr
die slidehow funkioniert auch mit mehren bildern. es gibts ein modul fürs feld slideshow field glaube ich. oder aber auch nivio slider
der kan die anzeige des feldes direkt als slideshow ausgeben
ansonsten geht auch über views; viewfield dann in die node nehmen, argumente übergeben, views slideshow oder nivio;
du mußt dein feld auf mehrfach setzen. dann werden auch alle bilder als slide angezeigt...
C.A.W. Webdesign
Hi,wenn ich das image-field
am 26.03.2013 - 14:06 Uhr
Hi,
wenn ich das image-field umschreibe und daraus die image-url's nehme habe ich leider nichts gewonnen, da ich ja immer den Pfad für das aktuell in der Slideshow gezeigte Bild brauche, um die Exif-Information je Bild anzuzeigen.
Nehme ich ein anderes Plugin oder Module wie nivo slider müsste ich auch dort den code untersuchen wie da der jeweilige filename oder image-url definiert ist, daran scheitert es dann bei mir.
@Caw deinen Beitrag verstehe nicht nicht (bis auf die Empfehlung des nivo sliders :) ) Das die Slideshow mit mehreren Bildern funktioniert ist ja nicht mein Problem, das geht ja, nur leider wird ein und dasselbe Bild mehrmals angezeigt wenn ich views-slideshow verwende und die Bildquelle ein einzelnen image-feld ist.
Mit mehrmals meine ich
Slide 1 = Bild 1
Slide 2 = Bild 1
Slide 3 = Bild 1
Slide 4 = Bild 2
Slide 5 = Bild 2
usw.
LG
Hallo,Lösung:ich habs nun
am 27.03.2013 - 12:12 Uhr
Hallo,
Lösung:
ich habs nun doch mit Views-Slideshow hinbekommen! Soweit ich das beurteilen kann, lag es daran, dass ich sowohl die thumbs als auch die slider mit colorbox formatiert hatte. Und die dann zusammen (also doppelt) in der Colorbox-Galerie auftraten. Man kann aber thumbs und slider dann unterschiedlichen Colorbox galerien zuordnen (in den views einstellungen) dann vermeidet man dieses Problem.
Zudem musste ich die Beziehungen:
verwenden.
Neues Problem:
Nun klappt alles soweit! Und die jeweiligen Exif-daten werden über ein global php feld unter der slideshow ausgegeben. Leider habe ich nun das Problem, dass wenn ich unterschiedlich hohe Bilder verwende, dieser Block hoch und runter springt. Ich möchte diesen Block aber rechts von der slideshow platzieren und er soll nicht dauernd je nach Bild hoch oder runter springen. Habs mit css -> position: absolut versucht. Aber er springt trotzdem weiter rum... Wie kann ich das lösen??
Ansatz:
es scheint der Block: .slideshow-group-fields-wrapper muss geändert werden. Wie bekomme ich allerdings eine extra css klasse für diesen Block hin, damit sich nicht alle anderen slideshows auch ändern?
LG
Du musst mehrere CSS Werte
am 27.03.2013 - 12:10 Uhr
Du musst mehrere CSS Werte anpassen.
Ich rate jetzt mal ohne den Code zu kennen:
Am besten den ganzen SlideContainer auf position relativ setzen und dann den Container der die EXIF Daten hält auf position absolute.
Eventuell auch beiden einen z-index verpassen (EXIF Container eins höher setzen)
WEBTRANSFORMER
Ansatz:es scheint der Block:
am 27.03.2013 - 12:15 Uhr
Ansatz:
es scheint der Block: .slideshow-group-fields-wrapper muss geändert werden. Wenn ich am Global-php-block rummache (css technisch :-)) bringt das nichts da dieser im genannten block liegt.
Wie bekomme ich allerdings eine extra css klasse für diesen Block hin?, damit sich nicht alle anderen slideshows auch ändern...
Bei Felder -> Einstellungen kann ich ja nur wählen --> "Provide default field wrapper elements " aber keine custom css klassen hinzufügen :(
Denke nicht dass du mehr
am 27.03.2013 - 12:16 Uhr
Denke nicht dass du mehr Klassen brauchst.
Schick mir mal per PN einen Link. Dann kann ich dir genau sagen was du machen musst.
WEBTRANSFORMER
ALLES ENTFERNEN BEI DEN
am 27.03.2013 - 13:33 Uhr
ALLES ENTFERNEN BEI DEN BEIDEN KLASSEN / ID:
.bildinfo-text2,
#bildinfo-text2 {
}
UND DAS ÄNDERN
.slideshow-group-fields-wrapper {
background: none;
height: 65px;
position: absolute;
right: -263px;
top: 77px;
width: 154px;
}
Du müsstest mal dein Template "aufräumen". Da sind viele unnötig absolt positionierte Elemente die das Layout durcheinander bringen könnten.
WEBTRANSFORMER
Goekmen schrieb ALLES
am 27.03.2013 - 13:38 Uhr
ALLES ENTFERNEN BEI DEN BEIDEN KLASSEN / ID:
.bildinfo-text2,
#bildinfo-text2 {
}
UND DAS ÄNDERN
.slideshow-group-fields-wrapper {
background: none;
height: 65px;
position: absolute;
right: -263px;
top: 77px;
width: 154px;
}
Du müsstest mal dein Template "aufräumen". Da sind viele unnötig absolt positionierte Elemente die das Layout durcheinander bringen könnten.
Aber ändert das nicht auch alle anderen Slideshows die ich auch der website habe? Deswegen dachte ich, dass ich einen für diese slideshow spezifischen ".slideshow-group-fields-wrapper" brauche, nur weiß ich nicht wie ich für den ne custom css klasse erstellen kann.
LG
du kannst doch im view eine
am 27.03.2013 - 14:04 Uhr
du kannst doch im view eine klasse eingeben.
außerdem hast du doch pro view soweiso eine einduetige id
C.A.W. Webdesign
Klick in Views auf der
am 27.03.2013 - 13:52 Uhr
Klick in Views auf der rechten Seite auf "Theme Informationen". Such das verwendete Template aus dem Views Module Verzeichnis raus und kopiere es in dein Theme Verzeichnis mit einem Namen der die Views vorschlägt.
SO etwas wie views-view--deinegalerie.tpl.php
Dann öffne das Template und füge eine neue Klasse hinzu und lade das neue Template hoch und lösch den Cache.
Danach gehst du wieder in Views und schaust dir die Theme Informationen und klickst auf Vorlagen neu einlesen. Dein neues Template müsste jetzt fett geschrieben sein.
Wenn das passiert, wird dein eigenes Views Template verwendet.
WEBTRANSFORMER
caw schrieb du kannst ein
am 27.03.2013 - 14:02 Uhr
du kannst ein klasse im view vergeben.
aber nicht für den .slideshow-group-fields-wrapper ...oder?
@goekmen
super! Vielen vielen Dank!! Werde das gleich mal testen!
lolhonk schrieb caw
am 27.03.2013 - 14:17 Uhr
du kannst ein klasse im view vergeben.
aber nicht für den .slideshow-group-fields-wrapper ...oder?
@goekmen
super! Vielen vielen Dank!! Werde das gleich mal testen!
in jedem view kannst du eine css klasse eingeben
C.A.W. Webdesign
caw schrieb lolhonk
am 27.03.2013 - 14:35 Uhr
du kannst ein klasse im view vergeben.
aber nicht für den .slideshow-group-fields-wrapper ...oder?
@goekmen
super! Vielen vielen Dank!! Werde das gleich mal testen!
in jedem view kannst du eine css klasse eingeben
du meinst unter --> erweitert -->andere-->CSS-Klasse?
dort habe ich "exif-slider" eingegeben. wie lautet dann mein ".slideshow-group-fields-wrapper"?
LG
@cawkannst du mir nochmals
am 28.03.2013 - 15:58 Uhr
@caw
kannst du mir nochmals weiterhelfen wie ich über die css-klassen zur Lösung komme? Denn wenn ich .slideshow-group.fields-wrapper ändere, dann ändert dies auch meine anderen slideshows Z.b. auf meiner Startseite...
ansonnsten bin ich gerade dabei eine custom template zu erstellen so wie es Goekmen vorgeschlagen hat, mal sehn ob ich das hinbekomme
Update: leider weiß ich nicht an welche Stelle ich in diese .tpl Dateien meine css-klasse hinzufügen soll. Denn ich finde da keinen code der mir diesen ".slideshow-group-fields-wrapper" definiert bzw. erzeugt.
LG
Wenn du dir nicht sicher
am 28.03.2013 - 16:26 Uhr
Wenn du dir nicht sicher bist, dann pack ein DIV mit deiner Klasse um alles und lass den restlichen Code stehen.
WEBTRANSFORMER
Goekmen schrieb Wenn du dir
am 28.03.2013 - 17:13 Uhr
Wenn du dir nicht sicher bist, dann pack ein DIV mit deiner Klasse um alles und lass den restlichen Code stehen.
aber der doofe ".slideshow-group-fields-wrapper" bleibt damit ja dann trotzdem gleich und ändert sich bei jeder anderen slideshow mit :-(
Ich kann dir ehrlich gesagt
am 28.03.2013 - 17:22 Uhr
Ich kann dir ehrlich gesagt nicht mehr folgen.
Du musst die richtige Vorlage im Views Template Ordner ausfindig machen und dann diese in dein Theme Verzeichnis kopieren und den Namen überschreiben.
Der genau Name wird in Views angezeigt.
Dann wird deine Vorlage für die Slideshow verwendet. Nur dieses View wird dann überschrieben.
WEBTRANSFORMER
Guck dir mal das Video
am 28.03.2013 - 17:28 Uhr
Guck dir mal das Video an:
http://www.youtube.com/watch?v=1Cfc11_sb5M
Minute: 8:40
WEBTRANSFORMER
Goekmen schrieb Ich kann dir
am 28.03.2013 - 19:24 Uhr
Ich kann dir ehrlich gesagt nicht mehr folgen.
Du musst die richtige Vorlage im Views Template Ordner ausfindig machen und dann diese in dein Theme Verzeichnis kopieren und den Namen überschreiben.
Der genau Name wird in Views angezeigt.
Dann wird deine Vorlage für die Slideshow verwendet. Nur dieses View wird dann überschrieben.
ja genau das hab ich auch gemacht. Doch das Problem ist ja, jetzt lädt er zwar ein anders template aber dies gibt ja den gleichen inhalt aus, sprich der wrapper in dem die view-felder der slideshow ausgegeben werden, also der (.slideshow-group-fields-wrapper) wird ja trotzdem mit diesem name erzeugt und wenn ich da was am css ändere, ändert dies auch meine slideshow auf der Startseite. (Oder hab ich da nen kompletten Denkfehler?!)
ich müsste jetzt quasi rausfinden welcher code dafür verantwortlich ist und dann im template diesen so ändern, dass ".slideshow-group-fields-wrapper" z.B. dann als ".slideshow-group-fields-wrapper-meine-slideshow" erzeugt wird. Aber leider fehlts mir da am php-Kenntnis d.h. ich werd aus dem code in den templates nicht schlau...
wenn ich jetzt das view-template des "global-php-felds" nehme, (das mir ja die exif-infos über die slideshow-images ausgibt) und um den Code ein neues div lege, so ist dieser div-block ja dann trotzdem innerhalb des .slideshow-group-fields-wrapper und dieser doofe block springt ja je nach größe des Bildes rum, d.h. mein erzeuger neuer div wird auch weiter rumspringen...
Ich finde halt leider nicht in diesen ganzen Templates den Code der diesen .slideshow-group-fields-wrapper erzeugt.... :-(
LG