Làm cách nào để tôi lập trình thêm hình ảnh trong khi lập trình tạo các nút?


9

Tôi đang viết một tập lệnh để thêm các nút theo chương trình và tôi không biết cách thích hợp để thêm / đính kèm hình ảnh. Thật ra tôi không quen với Drupal.

Dưới đây là các đối tượng hình ảnh (mẫu) mà tôi tìm thấy trong khi sử dụng Tôi print_rhiện $nodeđang sử dụng:

trường_image: Mảng ([und] => Mảng ([0] => Mảng ([fxid] => 3089 [alt] => [title] => [width] => 95 [height] => 126 [uid] = > 249 [tên tệp] => helloworld.jpg [uri] => công khai: //helloworld.jpg [filemime] => image / jpeg [filesize] => 3694 [status] => 1 [timestamp] => 1346748001 [loại ] => image [media_title] => Array () [media_description] => Array () [field_tags] => Array () [field_license] => Array ([und] => Array ([0] => Array ([ giá trị] => không có gì))) [metatags] => Array () [rdf_mapping] => Array ())))

Cái tiếp theo tôi tìm thấy là như sau.

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

Làm thế nào tôi nên thêm một hình ảnh vào nút đó theo cách đó?

Câu trả lời:


4

Giả sử các trường hình ảnh của bạn trong field_body_images,

đầu tiên loadnút của bạn bằng cách node_load và ghi lại hình ảnh của bạn trong filecác bảng và thêm nó vào trường hình ảnh nút của bạn Tôi hy vọng mẫu này giúp bạn đạt được:

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

Có một số mã để chứng minh điều này trong devel_generate: drupalcontrib.org/api/drupal/ tựa Devel_generate tất nhiên tạo ra nội dung giả cho các trang web Drupal, bao gồm cả hình ảnh. Đó là một phần của gói Devel: drupal.org/project/devel
— paul-m

Đừng quên thêm file_usage_add($file, 'file', 'node', $n->nid);vào cuối cùng để ngăn chặn tập tin vô tình xóa.
— Neograph734

@ Neograph734 nó sẽ thêm khi node_saveđược kích hoạt.
— Yusef

@ Neograph734 bạn được chào đón;). tnx cho sự chú ý của bạn
— Yusef

1

Drupal 8

Đối với Drupal 8, nó sẽ như sau. Đầu tiên thêm tệp và nhận ID tệp. Sau đó tạo nút và đính kèm ID tệp đã cho.

$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

Có thể không chính xác những gì bạn cần, nhưng tại sao không chỉ thêm một tham chiếu đến một hình ảnh trong một trường, như ví dụ 2 của bạn gợi ý? Và sau đó trong tệp mẫu nội dung hiển thị trường đó dưới dạng hình ảnh.

Trong luồng tạo nút:

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

Trong loại nội dung:

<?php
global $base_url;
$image_source_link=$base_url . $node->field_image['und'][0]['value'];
?>
<img src="<?php print($image_source_link); ?>" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.