প্রোগ্রামগতভাবে নোডগুলি তৈরি করার সময় আমি কীভাবে প্রোগ্রামে কোনও চিত্র যুক্ত করব?


9

আমি প্রোগ্রামক্রমে নোড যুক্ত করার জন্য একটি স্ক্রিপ্ট লিখছি এবং আমি চিত্র যুক্ত করার / সংযুক্ত করার সঠিক উপায়টি জানি না। আসলে আমি দ্রুপালের সাথে তেমন পরিচিত নই।

আমি print_rযে বিদ্যমান $nodeব্যবহার করছি তা ইনগ করার সময় আমি এখানে (নমুনা) চিত্র অবজেক্টগুলি পেয়েছি :

ক্ষেত্রের চিত্র: অ্যারে ([Und]] => অ্যারে ([0] => অ্যারে ([fxid] => 3089 [alt] => [শিরোনাম] => [প্রস্থ] => 95 [উচ্চতা] => 126 [ইউআইডি] = > 249 [ফাইলের নাম] => হেলোরওল্ড.জেপিজি [ইউরি] => সর্বজনীন: //helloworld.jpg [ফাইলমাইম] => চিত্র / জেপিগ [ফাইলসাইজ] => 3694 [স্ট্যাটাস] => 1 [টাইমস্ট্যাম্প] => 1346748001 [টাইপ ] => চিত্র [মিডিয়া_শিরোনাম] => অ্যারে () [মিডিয়া_সংশ্লিষ্ট] => অ্যারে () [ক্ষেত্র_ট্যাগ]]> অ্যারে () [ফিল্ড_লিকেন্স] => অ্যারে ([Und]] => অ্যারে ([0] => অ্যারে ([ মান] => কিছুই নয়))) [মেটাগ্যাগ] => অ্যারে () [আরডিএফ_ম্যাপিং] => অ্যারে ()))

পরেরটি আমি খুঁজে পেয়েছি নীচে।

ফিল্ড_টেম্প_মেজেজ: অ্যারে ([und] => অ্যারে ([0] => অ্যারে ([মান]] => http://www.example.com/sample-path/helloworld.jpg [ফর্ম্যাট] => [নিরাপদ_মূল্য] => 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);

ডেভেল_জেনারেটে এটি প্রদর্শনের জন্য কিছু কোড রয়েছে: drupalcontrib.org/api/drupal/… ডেভেল_জেনারেট ইমেজ সহ ড্রুপাল সাইটগুলির জন্য ডামি সামগ্রী তৈরি করে। এটি ডিভেল প্যাকেজের অংশ: drupal.org/project/devel
পল-মি

file_usage_add($file, 'file', 'node', $n->nid);ফাইলটি দুর্ঘটনা মোছা থেকে রোধ করতে শেষ পর্যন্ত যুক্ত করতে ভুলবেন না ।
নেওোগ্রাফ 734

@ Neographic734 node_saveট্রিগার হওয়ার সময় এটি যুক্ত হবে ।
ইউসুফ

@ নিওগ্রাফ 7373৪ আপনাকে স্বাগতম;)। আপনার মনোযোগের জন্য tnx
ইউসেফ

1

দ্রুপাল ৮

ড্রুপাল 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); ?>" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.