Programlı olarak düğüm oluştururken programlı olarak nasıl görüntü eklerim?


9

Programsal olarak düğüm eklemek için bir komut dosyası yazıyorum ve resim eklemek / eklemek için doğru yolu bilmiyorum. Aslında Drupal'a aşina değilim.

İşte kullandığım print_ring ing sırasında buldum (örnek) görüntü nesneleri $node:

field_image: Dizi ([und] => Dizi ([0] => Dizi ([fxid] => 3089 [alt] => [başlık] => [genişlik] => 95 [yükseklik] => 126 [uid] = > 249 [dosyaadı] => helloworld.jpg [uri] => public: //helloworld.jpg [filemime] => image / jpeg [dosya boyutu] => 3694 [durum] => 1 [zaman damgası] => 1346748001 [tip ] => image [media_title] => Dizi () [media_description] => Dizi () [field_tags] => Dizi () [field_license] => Dizi ([und] => Dizi ([0] => Dizi ([ değer] => hiçbir şey))) [meta etiketler] => Dizi () [rdf_mapping] => Dizi ())))

Bir sonraki bulduğum.

field_temp_image: Dizi ([und] => Dizi ([0] => Dizi ([değer] => http://www.example.com/sample-path/helloworld.jpg [biçim] => [güvenli_değer] => http://www.example.com/sample-yol/helloworld.jpg))) `

Bu düğüme bu şekilde nasıl resim eklerim?

Yanıtlar:


4

Resim alanlarınızın field_body_images,

önce loaddüğümünüzü node_load ve resminizi filetablolara kaydedin ve düğümünüzün görüntü alanına ekleyin Umarım bu örnek elde etmenize yardımcı olur:

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

Bunu devel_generate içinde göstermek için bazı kodlar vardır: drupalcontrib.org/api/drupal/… Devel_generate elbette görüntüler dahil Drupal siteleri için kukla içerik üretir. Devel paketinin bir parçası: drupal.org/project/devel
paul-m

file_usage_add($file, 'file', 'node', $n->nid);Dosyanın yanlışlıkla silinmesini önlemek için sonuna eklemeyi unutmayın .
Neograph734

@ Neograph734 node_savetetiklendiğinde ekleyecektir .
Yusef

@ Neograph734 hoş geldiniz;). İlginiz için tnx
Yusef

1

Drupal 8

Drupal 8 için aşağıdaki gibi gider. Önce dosyayı ekleyin ve bir dosya kimliği edinin. Ardından düğümü oluşturun ve verilen dosya kimliğini ekleyin.

$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

Tam olarak ihtiyacınız olan şey olmayabilir, ancak neden örnek 2'deki gibi bir alandaki bir görüntüye referans eklemiyorsunuz? Ve sonra içerik şablonu dosyasında bu alanı bir görüntü olarak işleyin.

Düğüm oluşturma akışında:

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

İçerik türünde:

<?php
global $base_url;
$image_source_link=$base_url . $node->field_image['und'][0]['value'];
?>
<img src="<?php print($image_source_link); ?>" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.