Marios Daskalas
12/09/2022, 11:11 AM<?php
use Drupal\node\Entity\Node;
/**
* Create nodes from JSON feed.
*/
function updateNodes(string $json_url) {
// Get JSON contents
$json = file_get_contents(__DIR__ . $json_url);
$jsonout = json_decode($json, TRUE);
// Loop through JSON
foreach ($jsonout['places'] as $store) {
// Set for email
for ($i = 0; $i < count($store['embed_payload']['blocks']); $i++) {
if ($store['embed_payload']['blocks'][$i]['type_id'] == 'email') {
$email = $store['embed_payload']['blocks'][$i]['content'];
}
}
$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties(['type' => 'katastimata']);
foreach ($nodes as $node) {
$node->set('langcode', 'en');
$node->set('uid', '1');
$node->set('status', 1);
$node->set('title', $store['title']);
$node->set('field_titlos', $store['title']);
$node->set('field_ypotitlos', 'HOME');
$node->set('field_katigoria', $store['subtitle']);
$node->set('field_dieythynsi', $store['address']['address']);
$node->set('field_latitude', $store['address']['latitude']);
$node->set('field_longitude', $store['address']['longitude']);
$node->set('field_email_epiheirisis', $email);
$node->set('field_istotopos', [
'uri'=> $website,
'title' => 'Ιστότοπος',
]);
$node->set('field_poli', explode(", ", $store['address']['address'])[1]);
$node->set('field_hora', explode(", ", $store['address']['address'])[2]);
$node->save();
}
}
}
// Enter JSON path
$json = '/2_gift.json';
// Call function
updateNodes($json);
Παιδιά, έχω φτιάξει ένα scriptaki με σκοπό την ενημέρωση ήδη υπάρχων nodes σε συγκεκριμένα content type. Η πληροφορία παίρνετε από ένα JSON. Παρόλα αυτά μου ενημερώνει μόνο το τελευταίο κατάστημα από το JSON. Κάποιο πρόβλημα υπάρχει στον συνδυασμό των δύο foreach. Καμία ιδέα?dimitriskri
12/09/2022, 11:21 AMefpapado
12/09/2022, 11:22 AMefpapado
12/09/2022, 11:23 AMMarios Daskalas
12/09/2022, 11:23 AM$node = Node::load(233);
$node->set('field_ypotitlos', 'RANDOM');
$node->set('field_katigoria', $store['subtitle']);
$node->save();Marios Daskalas
12/09/2022, 11:23 AMefpapado
12/09/2022, 11:24 AMefpapado
12/09/2022, 11:25 AM$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['type' => 'katastimata']);
θα πρέπει να φορτώσεις το συγκεκριμένο node που αντιστοιχεί στο store που εξετάζεις σε εκείνο το foreach-stepefpapado
12/09/2022, 11:26 AMefpapado
12/09/2022, 11:26 AMefpapado
12/09/2022, 11:26 AMMarios Daskalas
12/09/2022, 11:28 AMMarios Daskalas
12/09/2022, 11:28 AMdimitriskri
12/09/2022, 11:28 AMMarios Daskalas
12/09/2022, 11:28 AMdimitriskri
12/09/2022, 11:29 AM$node = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['field_titlos' => $store['title']);
$node = current($node);dimitriskri
12/09/2022, 11:29 AMMarios Daskalas
12/09/2022, 11:30 AMMarios Daskalas
12/09/2022, 11:30 AM$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties(['type' => 'katastimata']);efpapado
12/09/2022, 11:31 AM\Drupal::entityQuery('node')->condition('field_titlos', $title)->condition('type', 'katastimata')->execute()dimitriskri
12/09/2022, 11:31 AMdimitriskri
12/09/2022, 11:32 AMMarios Daskalas
12/09/2022, 11:51 AM$node = \Drupal::entityQuery('node')->condition('field_titlos', $title)->condition('type', 'katastimata')->execute();
foreach ($nodes as $node) {
$node->set('field_ypotitlos', 'TEST4');
$node->set('field_katigoria', $store['subtitle']);
$node->set('field_titlos', $store['title']);
$node->save();
}Marios Daskalas
12/09/2022, 11:52 AMefpapado
12/09/2022, 11:52 AMMarios Daskalas
12/09/2022, 12:06 PMMarios Daskalas
12/09/2022, 12:07 PMMarios Daskalas
12/09/2022, 2:24 PM$nid = \Drupal::entityQuery('node')->condition('field_ypotitlos', "CLOTHES")->condition('type', 'katastimata')->execute();
print_r($nid);
foreach($nid as $x => $x_value) {
print_r("Value = " . $x_value . PHP_EOL);
$node = Node::load($x_value);
$node->set('field_dieythynsi', $store['address']['address']);
$node->save();
}Marios Daskalas
12/09/2022, 2:24 PM