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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.