2012-06-21 16 views
19

यह काफी संभव है कि मैं केवल उस कार्य के नाम को ढूंढने में मदद ढूंढ रहा हूं जो ड्रूपल (7) के भीतर पहले से मौजूद है लेकिन कभी-कभी दस्तावेज़ीकरण नेविगेट करना थोड़ा मुश्किल होता है। उम्मीद है कि कोई मेरी मदद कर सकता है।मैं एक ड्रूपल छवि फ़ील्ड कैसे आउटपुट करूं?

मेरे पास एक नोड है जिसमें कस्टम फ़ील्ड है।

मैं एक टेम्पलेट field--mycustomcontenttype.tpl.php के भीतर काम कर रहा हूं और इसलिए PHP शैलियों का नाम ढूंढने की कोशिश कर रहा हूं जो छवि शैलियों के साथ आउटपुट और छवि फ़ील्ड है।

mycustomcontenttype निम्नलिखित अतिरिक्त क्षेत्र के साथ एक नोड है:

[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 
     (
    ) 
) 

तो मैं सकता है का उपयोग कर एक (बदसूरत) हाथ लुढ़का कार्यों कि $item['#options']['entity']->field_image में पाया मूल्य लेता है और public:// का प्रतिस्थापन करता है छवि प्रदर्शित वास्तविक सर्वर पथ के लिए, और फिर यह भी संभव है कि मैं छवि को सही ड्रूपल छवि शैली (थंबनेल, कस्टम-शैली, आदि ...) के साथ लोड करना चाहता हूं

अफसोस की बात है, मेरे पास अभी नहीं है मजाक का नाम क्या है कथन जो कुछ काम करता है: unknown_function_name_drupal_image_print($item['#options']['entity']->field_image, 'thumnail'); है।

क्या कोई ऐसा है जो इसे ढूंढने में मेरी मदद कर सकता है?

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

संपादित

के रूप में बताया तो आप भी छवि शैली प्रबंधित प्रदर्शन पेज में सामग्री प्रकार के लिए सेट कर सकते हैं और:

उत्तर

23

आप के लिए image_style_url(style_name, image_url);

उदाहरण के लिए देख रहे हैं फिर रेंडर का उपयोग कर आउटपुट।

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

मैं, इस बात से सहमत है, हालांकि मैं कहूंगा कि यह Drupals विषय परत का उपयोग कर छवि http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_image/7 प्रस्तुत करना बेहतर है –

+0

मैं पूरी तरह से सहमत हूं, लेकिन सवाल एक ऐसे फ़ंक्शन की तलाश में लग रहा था जो छवि शैली को लेता है जिसमें यह करता है। हालांकि मैंने रेंडर विकल्प को शामिल करने के लिए संपादित किया है। – SpaceBeers

+0

मेरा समय बचाया। बहुत बहुत धन्यवाद –

12

स्पेसबियर का उत्तर सही है - आप इस तरह से छवि प्रिंट कर सकते हैं। लेकिन Drupal पक्ष में, यह बुरा है। आपके पास भाषा अनिर्धारित है, और सीधे केवल पहले फ़ील्ड का उपयोग करके यदि यह बहु-मान फ़ील्ड है। इसके अलावा, आप कुछ ड्रूपल की अच्छी चीजें जैसे यूआई का उपयोग करके छवि शैली बदलना मुश्किल कर रहे हैं।

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

यह उचित आयाम (img टैग में), ऑल्ट टैग के साथ छवि प्रिंट होगा, और हमेशा सम्मान करता है कि आप क्या में mycustomcontenttype नोड प्रकार के प्रदर्शन टैब प्रबंधित निर्धारित किया है।

+0

मैंने इसे शामिल करने के लिए मेरे जवाब में संशोधन किया है। मुझे लगता है कि वे पहले से ही यह जानते थे और डिफ़ॉल्ट रूप से छवि को एक अलग शैली में आउटपुट करने में सक्षम होना चाहते थे। – SpaceBeers

1

मुझे लगता है कि आयुष के का जवाब पृष्ठ पर एक फ़ील्ड प्रिंट करने का पसंदीदा ड्रूपल तरीका है। यूआई में अपनी छवि में किए गए किसी भी ऑपरेशन/प्रीसेट को पढ़ने के लिए बहुत आसान है, और रखता है।

आप इसे तोड़ सकते हैं, लेकिन ऐसा लगता है कि यह संकीर्ण उपयोग के मामलों के लिए होगा।

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

तुम भी एक "गुण" सरणी चर (जैसे) वर्ग, ऑल्ट & खिताब के लिए तत्व शामिल हो सकते हैं:

8

मैं इस का उपयोग करें। मुझे लगता है कि यह अभी भी ड्रूपल (या आपकी थीम) डिफ़ॉल्ट छवि प्रतिपादन का उपयोग करते हुए, छवि शैली की अपनी पसंद को अनुमति देने के लिए एक बेहतर विकल्प है।

14

मैं field_get_items और field_view_value के संयोजन का उपयोग करके ऐसा करूँगा।

उदाहरण के लिए:

<?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); ?> 

मैं क्षेत्र का उपयोग और यह बहुत ही बात here के बारे में लिखने के ऊपर है।

शुभकामनाएं।

+2

यह बहुत अच्छा है! हालांकि (कम से कम Drupal 7 के लिए), field_view_value पर कॉल होना चाहिए: field_view_value ('नोड', $ नोड, 'field_image', $ छवियां [0], सरणी ( 'प्रकार' => 'छवि', 'सेटिंग' => सरणी ) ( 'image_style' => 'custom_image_style' // 'झलक' हो सकता है); ... आप फ़ील्ड नाम शामिल करने की ज़रूरत –

+0

वहाँ करने के लिए सीएसएस वर्ग के लिए कोई तरीका है। फील्ड रैपर भी ?! – SaidbakR

+0

यह मेरे लिए काम करता है और भाषाओं मॉड्यूल oob –

3

आप

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

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

यह मेरी खोज परिणाम पृष्ठ के लिए एक छवि को जोड़ने के लिए मेरे लिए काम किया उपयोग करना चाहिए:

<?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; ?> 
+0

बहुत सारी चीजें हो रही हैं, जैसे यूरी विस्फोट करना, फ़ाइलपैथ बनाना ... क्षमा करें लेकिन यह बहुत आसान होना चाहिए। –

0

इस तरह किया जा सकता है :

$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
$field_image = field_view_field('node', $promoNode, 'field_image'); 
$variables['promo_image'] = render($field_image); 

रेंडर:

<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>

नोट: लेबल से ऊपर वर्ग सामग्री प्रकार प्रबंधित-प्रदर्शन क्षेत्रों की सेटिंग से हटाया जा सकता है, के लिए लेबल की स्थापना करके, लेकिन यह अभी मेरे लिए काम नहीं कर रहा है इसलिए मैं .field__label वर्ग को छिपाने के लिए बस सीएसएस का उपयोग कर रहा हूं।

0
<?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

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, इस बारे में अतिरिक्त संदर्भ प्रदान करता है कि यह कैसे और/या समस्या का समाधान क्यों करता है, इसका उत्तर उत्तर के दीर्घकालिक मूल्य में सुधार होगा। (यहां से [https://meta.stackoverflow.com/questions/300837/what-comment-should-i-add-to-code-only-answers)) – kowsky

संबंधित मुद्दे