it-swarm.com.de

Wie füge ich programmgesteuert ein Bild hinzu, während ich programmgesteuert Knoten erstelle?

Ich schreibe ein Skript zum programmgesteuerten Hinzufügen von Knoten und kenne nicht die richtige Methode zum Hinzufügen/Anhängen von Bildern. Eigentlich kenne ich Drupal nicht so gut.

Hier sind die (Beispiel-) Bildobjekte, die ich gefunden habe, während print_ring das vorhandene $node Ich benutze:

 field_image: Array ([und] => Array ([0] => Array ([fxid] => 3089 [alt] => [title] => [width] => 95 [height] => 126 [uid] => 249 [Dateiname] => helloworld.jpg [uri] => public: //helloworld.jpg [filemime] => image/jpeg [Dateigröße] => 3694 [Status] => 1 [Zeitstempel] => 1346748001 [type] => image [media_title] => Array () [media_description] => Array () [field_tags] => Array () [field_license] => Array ([und] => Array ([0] => Array ([Wert] => nichts))) [Metatags] => Array () [rdf_mapping] => Array ()))) 

Der nächste, den ich gefunden habe, ist der folgende.

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

Wie soll ich diesem Knoten auf diese Weise ein Bild hinzufügen?

9
夏期劇場

Angenommen, Ihre Bildfelder in field_body_images,

zuerst load dein Knoten von node_load und zeichnen Sie Ihr Bild in file -Tabellen auf und fügen Sie es Ihrem Knotenbildfeld hinzu. Ich hoffe, dieses Beispiel hilft Ihnen dabei, Folgendes zu erreichen:

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

Drupal 8

Für Drupal 8) würde es wie folgt aussehen. Fügen Sie zuerst die Datei hinzu und erhalten Sie eine Datei-ID. Erstellen Sie dann den Knoten und hängen Sie die angegebene Datei-ID an.

$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();
1
leymannx

Möglicherweise nicht genau das, was Sie benötigen, aber warum nicht einfach einen Verweis auf ein Bild in einem Feld hinzufügen, wie in Beispiel 2 vorgeschlagen? Und dann in der Inhaltsvorlagendatei dieses Feld als Bild rendern.

Im Knotenerstellungsstrom:

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

Im Inhaltstyp:

<?php
global $base_url;
$image_source_link=$base_url . $node->field_image['und'][0]['value'];
?>
<img src="<?php print($image_source_link); ?>" />
0
NenadP