0
好吧,試圖處理腳本,PHP和JavaScript,我將一個特定的內容類型NODE從一個引用移動到另一個腳本。這是結構:Drupal從節點刪除節點引用
我有一個項目
每個項目中都PAGES
每個頁面中都標註
每個呼出裏面是產品。
我想要做的是從一個CALLOUT到另一個CALLOUT。我能夠合併這些,但現在我想要做的是刪除第一個實例。舉個例子:
我有產品AAG-794200
是在第6頁呼出A.我的合併,第6頁呼出B.
該產品,我可以得到的產品進行合併,但現在我需要從刪除CALLOUT A.這是我的代碼:
$merge = explode(',', $merge); //Merge SKUs
$mpages = explode(',', $mpages); //Merge Pages
$mcallouts = explode(',', $mcallouts); //Merge Callouts
$mcallout_nid = explode(',', $mcallout_nid); //Merge Current callout
$length = count($merge);
$e = 0;
while ($e < $length) {
//Where is the SKU going to?
$to_callout_letter = strtoupper($mcallouts[$e]);
$to_page_num = $mpages[$e];
$sku = $merge[$e];
$from_callout = $mcallout_nid[$e];
//Where is the SKU coming from?
$other_callout = node_load($from_callout);
//Need page ID of current callout for project purposes
$page_nid = $other_callout->field_page[0]['nid'];
$page = node_load($page_nid);
//Need the project NID
$project_nid = $page->field_project[0]['nid'];
//We need to get the NID of the page we are going to
$page_nid = db_query('SELECT * FROM content_type_page WHERE field_page_order_value = "%d" and field_project_nid = "%d" ORDER BY vid DESC LIMIT 1', $to_page_num, $project_nid);
$page_nid_res = db_fetch_array($page_nid);
$to_page_nid = $page_nid_res['nid'];
//We need to get the NID of the callout here
$co_nid = db_query('SELECT * FROM content_type_callout WHERE field_identifier_value = "%s" and field_page_nid = "%d"', $to_callout_letter, $to_page_nid);
$co_nid_res = db_fetch_array($co_nid);
$to_callout_letter_nid = $co_nid_res['nid'];
//Load the present callout the SKU resides on
$f_callout = node_load($from_callout);
$callout = node_load($to_callout_letter_nid);
$long = count($f_callout->field_skus);
$deletecallout = array();
foreach($f_callout->field_skus as $skus) {
$s = 0;
while ($s < $long) {
if($skus['nid'] == $sku) {
$callout->field_skus[] = $skus;
$s++;
}
else {
$deletecallout[] = $skus;
$s++;
}
}
}
foreach($other_callout->field_images as $old_image) {
$callout->field_images[] = $old_image;
}
foreach($other_callout->field_line_art as $old_image) {
$callout->field_line_art[] = $old_image;
}
foreach($other_callout->field_swatches as $old_image) {
$callout->field_swatches[] = $old_image;
}
$callout->field_copy_text[0]['value'] .= $other_callout->field_copy_text[0]['value'];
$callout->field_notes[0]['value'] .= $other_callout->field_notes[0]['value'];
$callout->field_image_notes[0]['value'] .= $other_callout->field_image_notes[0]['value'];
$callout->field_status[0]['value'] = 'In Process';
node_save($callout);
這會導致產品合併,但不會刪除原件。
感謝您的任何幫助。我知道這很簡單,這將是一個手掌對面的時刻。
您的代碼段不夠長,無法理解正在發生的事情。那裏有變數,沒有任何解釋。請提供更多信息。 – kekkis
@kekkis - 已發佈全部功能。 – webdevsoup
它看起來像你在foreach循環中填充一個$ deletecallout數組,但隨後沒有做任何事情。那是缺少的嗎?而你的代碼仍然不完整。 while($ e <$ length)循環的結束括號在哪裏? –