template - ¿Cómo hago salir un campo de imagen drupal?
temas para drupal 8 gratis (10)
Creo que la respuesta de Ayesh K es la forma preferida de Drupal de imprimir un campo en la página. Mucho más fácil de leer, y mantiene las operaciones / ajustes preestablecidos que realice en su imagen en la interfaz de usuario.
Se puede dividir, pero parece que sería para casos de uso restringido.
Es muy posible que esté buscando ayuda para encontrar el nombre de una función que ya existe dentro de drupal (7) pero a veces la documentación es un poco difícil de navegar. Esperemos que alguien me pueda ayudar.
Tengo un nodo que tiene un campo personalizado.
Estoy trabajando dentro de un field--mycustomcontenttype.tpl.php
plantilla field--mycustomcontenttype.tpl.php
y, por lo tanto, estoy tratando de encontrar el nombre de la función PHP que produce el campo de imagen y la imagen con estilos de imagen.
mycustomcontenttype
es un NODO con el siguiente campo adicional:
[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
(
)
)
Así que podría mostrar la imagen usando una (fea) funciones enrolladas a mano que toma el valor encontrado en $item[''#options''][''entity'']->field_image
y realiza la sustitución de public://
para la ruta real del servidor , y entonces también es posible que quiera cargar la imagen con el estilo de imagen Drupal correcto (miniatura, estilo personalizado, etc.)
Lamentablemente, no tengo ni idea de cómo funciona el nombre de la función: unknown_function_name_drupal_image_print($item[''#options''][''entity'']->field_image, ''thumnail'');
es.
¿Hay alguien que pueda ayudarme a encontrar esto?
Deberías usar
<?=''<img src="''.image_style_url(''fullwidth'', $node->field_page_image[''und''][0][''uri'']).''" />''?>
en lugar de
<?=''<img src="''.image_style_url(''fullwidth'', $node->field_page_image[''und''][0][''filename'']).''" />''?>
Está buscando image_style_url(style_name, image_url);
Por ejemplo:
<?=''<img src="''.image_style_url(''fullwidth'', $node->field_page_image[''und''][0][''filename'']).''" />''?>
EDITAR
Como se señaló, también puede configurar el estilo de imagen en la página Administrar visualización para el tipo de contenido y luego generar una salida con render.
<?php print render($content[''field_image'']); ?>
Esto me funcionó para agregar una imagen a mi página de resultados de búsqueda:
<?php if ($result[''node'']-> field_image): ?>
<?php
$search_image_uri = $result[''node'']-> field_image[''und''][0][''uri''];
// assuming that the uri starts with "public://"
$search_image_locate = explode(''//'', $search_image_uri);
$search_image_filepath = ''/sites/actual/path/to/public/'' . $search_image_locate[1];
?>
<div class="search-image">
<img src="<?php print $search_image_filepath; ?>" />
</div>
<?php endif; ?>
Esto se puede hacer así:
$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)." >";
Haría esto usando una combinación de field_get_items y field_view_value .
Por ejemplo:
<?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); ?>
Tengo un escrito sobre el acceso al campo y esto mismo here .
Buena suerte.
La respuesta de SpaceBeers es correcta: puede imprimir la imagen de esa manera. Pero en el lado de Drupal, es malo. Tiene un idioma no definido, y usa directamente solo el primer campo si es un campo de valor múltiple. Además, estás codificando algunas de las cosas interesantes de Drupal, como cambiar el estilo de imagen mediante la interfaz de usuario.
<?php print render($content[''field_image'']); ?>
Esto imprimirá la imagen con las dimensiones adecuadas (en la etiqueta img), las etiquetas alt, y siempre respeta lo que ha establecido en la pestaña Administrar visualización del tipo de nodo mycustomcontenttype.
Yo uso esto:
print theme(''image_style'', array(''path'' => [image uri from field], ''style_name'' => [image style]));
También puede incluir una variable de matriz de "atributos" que contiene elementos para (por ejemplo) clase, alt y título. Creo que esta es una mejor opción para permitir su elección de estilo de imagen, mientras sigue usando la representación de imagen predeterminada de Drupal (o su tema).
$field_image = field_view_field(''node'', $promoNode, ''field_image'');
$variables[''promo_image''] = render($field_image);
Renders:
<div class="field field--name-field-image field--type-image field--label-above">
<div class="field__label">Image: </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>
Nota: la clase de etiqueta superior podría eliminarse con la configuración de visualización de contenido de los campos, configurando la etiqueta a, pero eso no me funciona en este momento, así que simplemente estoy usando CSS para ocultar el. field__label class.
<?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"> '';
}
echo "</marquee>";
echo "</div>";
?>