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)循环的结束括号在哪里? –