Dies ist eine Frage im Zusammenhang mit dem Festlegen von Medienstilen in Media 7.1.2 / Media 7.2.X. .
Ich verwende Media 1.2 auf einer Drupal 7-Site, um Bilder mit einigen Feldern zu versehen (Bildunterschrift, Gutschrift usw.).
Wenn ich ein Bildfeld eingerichtet habe, das als gerenderte Datei mit einem bestimmten Ansichtsmodus angezeigt wird , z
Ich habe mein Display so eingerichtet, dass ich die richtigen Felder für diesen Ansichtsmodus anzeigen möchte. In der Dateianzeige, z
Gibt es eine Möglichkeit, das Bild in einen Link zur Medien- / FID-Seite zu verpacken? Ich sehe nicht, wie das über die Benutzeroberfläche gemacht wird, und Theme Developer gibt mir keine nützlichen Informationen darüber, welche Theme-Funktionen und Vorverarbeitungs- / Prozessfunktionen zwischen denen für das gesamte Bildfeld (in Bezug auf den Inhaltstyp) aufgerufen werden betroffen ist) und das Bild selbst (das eigentliche <img /> -Element).
An dieser Stelle möchte ich nicht zu Field Collection wechseln, würde aber den Wechsel zu Media 2.x in Betracht ziehen, wenn dies meine einzige Option ist.
hook_field_attach_view_alter()
?Antworten:
Wie bereits erwähnt, rendert Media Felder über den Formatierungsmechanismus für die Feldanzeige von Drupal. Ihr benutzerdefiniertes Modul wird funktionieren, aber es gibt eines dafür: Verknüpftes Feld
quelle
OK, hier ist der Arbeitscode.
Das Medienmodul implementiert
hook_file_formatter_info()
das Einrichten eines Rückrufs zum Rendern von Bildern.Wie bei Drupal gibt es eine Möglichkeit
hook_file_formatter_info_alter()
, das Standardverhalten zu ändern. Also habe ich den Standardrückruf von file_entity.module übernommen und in ein benutzerdefiniertes Modul geklont. Ich habe das dann mit dem Altar verkabelt. Mein benutzerdefinierter Rückruf verfügt über eine zusätzliche Logik, um nach einem Bildstil zu suchen und das Element dann mit einem Link zu versehen.Die einzige wirkliche Besonderheit ist, dass die Standardimplementierung von
theme_link()
davon ausgeht, dass es sich um ein Blattelement handelt. Sie müssen also zuerst das Bildelement rendern.Nebenbei bemerkt, auf diese Weise erhalten Sie auch Alt- / Titeltext auf die Bilder, der standardmäßig fehlt.
quelle
image_load
zu großen Leistungsproblemen führt. Wenn Sie sich die Standardimplementierung von ansehenfile_entity_file_formatter_file_image_view
, werden Sie feststellen, dass Sie Bildgrößen mit$file->image_dimensions
Array bywidth
undheight
Schlüsseln erhalten können.