प्रोग्रामेटिक रूप से नोड्स बनाते समय मैं प्रोग्रामेटिक रूप से एक छवि कैसे जोड़ूं?


9

मैं प्रोग्राम को नोड्स को प्रोग्रामेटिक रूप से जोड़ने के लिए एक स्क्रिप्ट लिख रहा हूं, और मुझे इमेज जोड़ने / संलग्न करने का उचित तरीका नहीं पता है। वास्तव में मैं द्रुपल से परिचित नहीं हूं।

यहाँ (नमूना) छवि वस्तुएं हैं जो मुझे मिलीं, जबकि print_rमौजूदा $nodeमैं उपयोग कर रहा हूं:

field_image: Array ([und] => Array ([0] => Array ([fxid] => 3089 [alt] => [title] => [चौड़ाई] = = 95 [ऊँचाई] => 126 [uid] = > 249 [फ़ाइल का नाम] => helloworld.jpg [uri] => जनता: //helloworld.jpg [फ़ाइल नाम] => छवि / जेपीईजी [filesize] => 3694 [स्थिति] => 1 [टाइमस्टैम्प] => 1346748001 [प्रकार ] => छवि [media_title] => सरणी () [media_description] => सरणी () [field_tags] => सरणी () [field_license] => सरणी ([und] => सरणी ([0] => सरणी) ([ मूल्य] => कुछ नहीं))) [मेटाटैग्स] => ऐरे () [rdf_mapping] => एरे ()))

अगला जो मैंने पाया वह निम्नलिखित है।

field_temp_image: Array ([und] => Array ([0] => Array ([value] => http://www.example.com/sample-path/helloworld.jpg] [format] => [safe_bueue] => http://www.example.com/sample-path/helloworld.jpg))))

मुझे उस तरह से उस नोड में एक छवि कैसे जोड़नी चाहिए?

जवाबों:


4

मान लें कि आपकी छवि फ़ील्ड में है field_body_images,

पहले loadअपनी नोड node_load को fileतालिकाओं में दर्ज करें और अपनी छवि को रिकॉर्ड करें और इसे अपने नोड छवि क्षेत्र में जोड़ें मुझे आशा है कि यह नमूना आपको प्राप्त करने में मदद करेगा:

$n=  node_load($nid);
$file = new stdClass();      
$file->filename =$file_name;
$file->filemime =file_get_mimetype($localimagepath.$file_name);
$file->filesize = @filesize(file_create_path($localimagepath.$file_name));
$file->uid = $user->uid;
$file->status = 1;
$file->timestamp = time();
$file->list=1;
$file->data=array('alt'=>'','title'=>$n->title);
drupal_write_record('files', $file);
$record->fid=$file->fid;
$n->field_body_images[]=(array)$file;
node_save($n);

Devel_generate में इसे प्रदर्शित करने के लिए कुछ कोड है: drupalcontrib.org/api/drupal/… बेशक Devel_generate Drupal साइटों के लिए डमी सामग्री बनाता है, जिसमें चित्र भी शामिल हैं। यह देवल पैकेज का हिस्सा है: drupal.org/project/devel
paul-m

file_usage_add($file, 'file', 'node', $n->nid);फ़ाइल को आकस्मिक विलोपन से बचाने के लिए अंत में जोड़ना न भूलें ।
Neograph734

@ Neograph734 यह node_saveट्रिगर होने पर जोड़ देगा ।
युसुफ

@ Neograph734 आपका स्वागत है;) आपका ध्यान के लिए tnx
Yusef

1

द्रुपाल al

Drupal 8 के लिए यह निम्नलिखित की तरह होगा। सबसे पहले फाइल को ऐड करें और एक फाइल आईडी प्राप्त करें। फिर नोड बनाएं और दिए गए फ़ाइल आईडी को संलग्न करें।

$data = file_get_contents(__DIR__ . '/images/my_image.jpeg');
$file = file_save_data($data, 'public://my_image.jpeg');

$node = \Drupal\node\Entity\Node::create([
  'type'             => 'page',
  'title'            => 'Foobar',
  'field_my_image' => [
    'target_id' => $file->id(),
    'alt'       => 'Lorem ipsum',
    'title'     => 'Dolor sit amet',
  ],
]);

$node->save();

0

हो सकता है कि वास्तव में आपको क्या चाहिए, लेकिन एक क्षेत्र में एक छवि के संदर्भ को क्यों न जोड़ें, जैसे कि आपका उदाहरण 2 बताता है? और फिर सामग्री टेम्पलेट फ़ाइल में उस फ़ील्ड को एक छवि के रूप में प्रस्तुत करें।

नोड निर्माण स्ट्रीम में:

$node->field_image['und'][0]['value'] = "/path_to_image/image.jpg";

सामग्री प्रकार में:

<?php
global $base_url;
$image_source_link=$base_url . $node->field_image['und'][0]['value'];
?>
<img src="<?php print($image_source_link); ?>" />
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.