it-swarm.com.de

Wie gebe ich ein Drupal-Bildfeld aus?

Möglicherweise suche ich nur nach Hilfe, um den Namen einer Funktion zu finden, die bereits in drupal (7) vorhanden ist, aber manchmal ist die Dokumentation etwas schwierig zu navigieren. Hoffentlich kann mir jemand helfen.

Ich habe einen Knoten, der ein benutzerdefiniertes Feld hat.

Ich arbeite innerhalb einer Vorlage field--mycustomcontenttype.tpl.php und versuche daher, den Namen der Funktion PHP zu finden, die das Bildfeld mit Bildstilen ausgibt.

mycustomcontenttype ist ein NODE mit dem folgenden zusätzlichen Feld:

[field_image] => Array
(
    [und] => Array
    (
        [0] => Array
        (
            [fid] => 51
            [alt] => ImageAltText
            [title] => 
            [width] => 150
            [height] => 150
            [uid] => 29
            [filename] => myimagename.jpg
            [uri] => public://myimagename.jpg
            [filemime] => image/jpeg
            [filesize] => 8812
            [status] => 1
            [timestamp] => 1339445372
            [uuid] => a088ea8f-ddf9-47d1-b013-19c8f8cada07
            [metatags] => Array
        (
    )
)

Ich könnte das Bild mit einer (hässlichen) von Hand gerollten Funktion anzeigen, die den in $item['#options']['entity']->field_image gefundenen Wert annimmt und den tatsächlichen Serverpfad durch public:// ersetzt das Bild mit dem korrekten Drupal-Bildstil laden möchten (Miniaturansicht, benutzerdefinierter Stil usw.)

Leider habe ich einfach keine Ahnung, wie der Name der Funktion lautet, die wie folgt funktioniert: unknown_function_name_drupal_image_print($item['#options']['entity']->field_image, 'thumnail');.

Gibt es jemanden, der mir helfen kann, das zu finden?

20
Alex C

Sie suchen nach image_style_url(style_name, image_url);

Zum Beispiel:

<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>

EDIT

Wie bereits erwähnt, können Sie den Bildstil auch auf der Seite "Anzeige verwalten" für den Inhaltstyp festlegen und dann mit Rendern ausgeben.

<?php print render($content['field_image']); ?>
23
SpaceBeers

Ich würde dies mit einer Kombination von field_get_items und field_view_value machen.

Zum Beispiel:

    <?php

    // In some preprocessor...
    $images = field_get_items('node', $node, 'field_image');
    if(!empty($images)) {
      $image = field_view_value('node', $node, 'field_image', $images[0], array(
        'type' => 'image',
        'settings' => array(
          'image_style' => 'custom_image_style' // could be 'thumbnail'
        )
      )
     );
    }
    $variables['image'] = $image;

    // Now, in your .tpl.php
    <?php print render($image); ?>

Ich habe einen Bericht über den Feldzugang und genau hier hier .

Viel Glück.

14
mavame

Die Antwort von SpaceBeers ist korrekt - Sie können das Bild auf diese Weise drucken. Aber auf der Drupal-Seite ist es schlecht. Sie haben Sprache undefiniert und verwenden nur das erste Feld direkt, wenn es ein Feld mit mehreren Werten ist . Außerdem sind einige der Drupal-Artikel von Nice hart codiert, z. 

<?php print render($content['field_image']); ?>

Dadurch wird das Bild mit den richtigen Abmessungen (im img-Tag) und den alt-Tags gedruckt. Dabei werden die Einstellungen auf der Registerkarte Anzeige verwalten des Knotentyps mycustomcontenttype berücksichtigt.

12
Ayesh K

Ich benutze das:

print theme('image_style', array('path' => [image uri from field], 'style_name' => [image style]));

Sie können auch eine Array-Variable "attributes" einschließen, die Elemente für (z. B.) Klasse, Alt und Titel enthält. Ich denke, dass dies eine bessere Option ist, um die Wahl des Bildstils zuzulassen, während Drupal (oder das Thema) standardmäßig für die Bildwiedergabe verwendet wird.

8
Heather Gaye

Du solltest benutzen

<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['uri']).'" />'?>

anstatt

<?='<img src="'.image_style_url('fullwidth', $node->field_page_image['und'][0]['filename']).'" />'?>
3
Denis

Ich denke, die Antwort von Ayesh K ist die bevorzugte Drupal-Methode, um ein Feld auf die Seite zu drucken. Viel einfacher zu lesen und behält alle Vorgänge/Voreinstellungen, die Sie für Ihr Bild in der Benutzeroberfläche vornehmen. 

Sie können es aufteilen, aber es scheint, dass dies für enge Anwendungsfälle wäre.

1
ricardoom
<?php
global $base_url;
$nid=6;//node id
$node=node_load($nid);
echo '<div style="margin-right:350px;">';
echo "<Marquee>";
foreach($node->field_image_gallery['und'] as $v){
$image=$v['uri'];
$image_path=explode("public://",$image);
$url_path=$base_url.'/sites/default/files/'.$image_path[1];
echo '<img src="'.$url_path.'" width="100" height="100">&nbsp;';
 }

echo "</Marquee>";
echo "</div>";
?>
1
gangadhara
 $field_image = field_view_field('node', $promoNode, 'field_image');
 $variables['promo_image'] = render($field_image);

Macht: 

<div class="field field--name-field-image field--type-image field--label-above">
  <div class="field__label">Image:&nbsp;</div>
  <div class="field__items">
      <div class="field__item even">
        <img typeof="foaf:Image" 
             src="http://domain/sites/domain/files/promo1.png"
             width="360" 
             height="301"
             alt="Promotional Image"
             title="Promotional Image Title">
      </div>
  </div>
</div>

Hinweis: Die obige Label-Klasse konnte mit den Inhaltstypen Manage-Display-Einstellungen der Felder entfernt werden, indem das Label auf festgelegt wurde. Dies funktioniert jedoch derzeit nicht für mich. Ich verwende einfach CSS. Feld__Label-Klasse. 

0

das kann so gemacht werden:

   $style='full_width';
   $path=$node->my_img_field['und']['0']['uri'];
   $style_url = image_style_url($style, $path);
   print "<img src=".file_create_url($style_url)." >";
0
Matoeil