Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

Zwei kleine Quickhacks zum Modul Album Photo

Eingetragen von Tostan (26)
am 10.01.2009 - 14:30 Uhr in
  • Module
  • Drupal 6.x

Hallo,

Ich nutze das Modul Album Photo in der Version photos-6.x-2.5-beta4. Zwei Sachen haben mich in dem Modul gestört.

Die Thumbnail-Ansicht ist so "zusammengeklatscht", Photo direkt an Photo

Ich hätte die Photos gern schön geordnet in Spalten und Zeilen wie eine Tabelle.

Dazu habe ich die Datei photos.module editiert.
Zuerst die Funktion photos_view_list_image

Original:

function photos_view_list_image($image, $type = 'view') {
  global $user;
  switch ($type){

Geändert:

function photos_view_list_image($image, $type = 'view') {
  global $user;
  if(variable_get('photos_t_w', '100x100')){
    list($w,$h) = explode('x',trim(variable_get('photos_t_w', '100x100')));
  }else{
    $w = 100;
    $h = 100;
  }
  $w=$w+18;
  $h=$h+18;
  switch ($type){

Erklärung:
hier wird einfach die maximalgröße der Thumbnails ermittelt (gibt es keine Angabe wird der Standard 100x100 genommen). Dann werden noch für margin, padding und border 18 Pixel hinzuaddiert.

Gleich darunter wird noch eine Zeile eingefügt:
Original:

  switch ($type){
    case 'view':
      $image = _photos_get_path($image, 'list');
      $title = _photos_node_title($image['pid']);
      $output = l('<img alt="'.check_plain($title).'" title="'.$image['des'].'" src="'._photos_file_create_url($image['p1']).'">','photos/image/'.$image['fid'], array('class'=> 'imageview','html'=>true));
    break;

Geändert:

  switch ($type){
    case 'view':
      $image = _photos_get_path($image, 'list');
      $title = _photos_node_title($image['pid']);
      $output = l('<img alt="'.check_plain($title).'" title="'.$image['des'].'" src="'._photos_file_create_url($image['p1']).'">','photos/image/'.$image['fid'], array('class'=> 'imageview','html'=>true));
      $output = '<div class="photos-thmb" style="height:'.$h.'px; width:'.$w.'px;"><div class="photos-thmb-inner">'.$output.'</div></div>'."\n";
    break;

Erklärung:
Hier werden um jedes Bild noch einmal zwei Boxen gelegt, in denen das Bild dann zentriert werden soll.

In der Funktion photos_nodeapi wird auch noch eine Zeile eingefügt.
Original:

         foreach ($p as $image) {
            $t .= photos_view_list_image($image,'view');
          }
          $t .= $pager;
        }

Geändert:

         foreach ($p as $image) {
            $t .= photos_view_list_image($image,'view');
          }
          $t .= '<p style="clear:both; height:00px; margin:0px;" />';
          $t .= $pager;
        }

Erklärung:
Der unsichtbare Absatz sorgt dafür, dass der Text unter den Bildern im Teaser wieder links beginnt und nicht direkt hinter dem letzten Bild. (keine Ahnung warum das mit span nicht funktioniert...)

Zum schluss noch in die .css Datei folgende Zeilen einfügen

.photos-thmb{
  display:table;
  float:left;
  margin:0px;
}
.photos-thmb-inner{
  display:table-cell;
  text-align:center;
  vertical-align:middle;
  margin:0px;
}

und fertig. Die Bilder werden tabellenartig dargestellt, bei Firefox und Opera horizontal und vertikal zentriert, beim IE leider nur horizontal.

Links im Teaser linken direkt auf das Bild, nicht auf das Album

Wenn ich ein Bild im Teaser anklicke, will ich, dass das Album erscheint, nicht das Bild. Dazu ändere ich wieder die
Datei photos.module, zuerst die Funktion photos_nodeapi.

Original:

          foreach ($p as $image) {
            $t .= photos_view_list_image($image,'view');
          }

Geändert:

          foreach ($p as $image) {
            if ( $teaser ) $t .= photos_view_list_image($image,'view',$node->path);
            else           $t .= photos_view_list_image($image,'view');
          }

Erklärung:
Hier wird einfach der aufgerufenen Funktion ein link mitgegeben, falls der teaser angezeigt wird. Die funktion muss dann natürlich auch noch geändert werden.

Original:

function photos_view_list_image($image, $type = 'view') {
  global $user;
  switch ($type){
    case 'view':
      $image = _photos_get_path($image, 'list');
      $title = _photos_node_title($image['pid']);
      $output = l('<img alt="'.check_plain($title).'" title="'.$image['des'].'" src="'._photos_file_create_url($image['p1']).'">','photos/image/'.$image['fid'], array('class'=> 'imageview','html'=>true));
}

Geändert:

function photos_view_list_image($image, $type = 'view', $linkpath='') {
  global $user;
  switch ($type){
    case 'view':
      $image = _photos_get_path($image, 'list');
      $title = _photos_node_title($image['pid']);
      if ($linkpath == '') $linkpath = 'photos/image/'.$image['fid'];
      $output = l('<img alt="'.check_plain($title).'" title="'.$image['des'].'" src="'._photos_file_create_url($image['p1']).'">',$linkpath, array('class'=> 'imageview','html'=>true));
}

Erklärung:
Hier erfolgt nun noch die Behandlung des vorhin übergebenen Links.

... und fertig.

Natürlich muss das bei jeder neuen Version wieder gemacht werden :(
Wenn jemand ideen zur Verbesserung hat, bzw. wie man auch den IEW dazu bringen kann, die Bilder vertikal zu zentrieren, wäre ich dafür dankbar.

‹ Advanced Forum: Leere Seite wird angezeigt! Drupal Events in Outlook importieren ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ist gut dass du hier soetwas

Eingetragen von dawehner (2639)
am 11.01.2009 - 14:48 Uhr

Ist gut dass du hier soetwas detailiert beschreibst aber etwas finde ich nicht so gut

1. warum veröffentlichst du nicht die Verändung als Patch, das ist für manche benutzer viel einfacher zu benutzen :)
2. warum führst du nicht in das schlecht geschriebene Modul Theme Funktionen ein, diese werden vom Maintainer auch übernommen und du kannst in dener template.php anpassen wie du willst

Trotzdem weiter so
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

ad 1) klar, patch ist

Eingetragen von Tostan (26)
am 11.01.2009 - 16:52 Uhr

ad 1) klar, patch ist einfacher zu handhaben, aber gilt halt nur für die oben genannte Version ... mit den Erklärungen kann man es meiner Meinung nach einfacher für spätere Versionen implementieren.

ad 2)
a: Weil ich absolut keine Ahnung von Modulentwicklung für Drupal habe.
b: Weil das Modul recht schwer verständlich da unkommentiert ist. Deshalb sind das auch wirklich nur Quickhacks, das geht sicher noch viel besser.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • benutzerdefinierte Felder vom Userprofil tauchen ungewollt oberhalb des Bodys jedes Forumtopics auf...
  • [gelöst] Mass contact Empfängerliste nach Taxonomy Term statt Rolle
  • Update V. 9.3.12 auf V. 9.4 mit Fehler: Modul mySQL fehlt. Bitte Hilfe.
  • Sprachpfad, in Drupal Korrekt einstellen, auch bei den Meta-Tags
  • Update von Drupal 9.3 auf 9.4 oder bei 9.3 bleiben
  • Terminverwaltung
  • Views in Seite einbetten
  • Hilfe! Nach Update auf 7.90 zeigt User reference (Kontrollkästchen/Auswahlknöpfe) nicht mehr vollständig an
  • ("Gelöst,...") Das Deinstallieren eines Content typen, der keinen Content hat, ist nicht möglich.
  • Drupal Website gestalten
  • DrupalCamping 2022 in Wolfsburg, 25. - 28. August
  • Entity Reference - Title Felder werden als Link angezeigt
Weiter

Neue Kommentare

  • Nein, das war es nicht. S. o.
    vor 1 Tag 23 Stunden
  • Eventuell hier ein Hinweis?
    vor 2 Tagen 9 Minuten
  • Lösung gefunden
    vor 10 Stunden 34 Minuten
  • Kalender und webform
    vor 4 Tagen 5 Stunden
  • Alle Funktionen sind in views schon enthalten
    vor 4 Tagen 5 Stunden
  • Danke, Werner. Composer läuft
    vor 5 Tagen 14 Stunden
  • Wenn eine neue Drupal
    vor 5 Tagen 15 Stunden
  • Nein. Mittlerweile denke ich,
    vor 5 Tagen 16 Stunden
  • Wurde der Update mit composer
    vor 5 Tagen 17 Stunden
  • Maik Petran schrieb und zwar
    vor 1 Woche 1 Tag

Statistik

Beiträge im Forum: 247845
Registrierte User: 19585

Neue User:

  • Tkakah
  • JeraldFub
  • andycrestodina

» Alle User anzeigen

User nach Punkten sortiert:
wla9212
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 9 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association