是否可以在编辑模式下加载节点并将发布选项设置为已发布?
drupal_goto("node/$node->nid/edit");
因此,用户无需手动设置选项,只有在用户单击“保存”(节点设置为未发布)后才会保存为已发布。
我想替换编程方法,因为它也会在编辑模式之前保存它
$node->status = NODE_PUBLISHED;
node_save($node);
仅供参考“发布选项”字段
<div class="form-item form-type-checkbox form-item-status">
<input type="checkbox" id="edit-status" name="status" value="1" class="form-checkbox">
<label class="option" for="edit-status">Published </label>
答案 0 :(得分:1)
您可以使用hook_form_alter()
更改表单:
5
因此,将检查发布选项。
或:
您可以使用hook_node_presave()
更改节点属性(提交时):
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
// if ($form_id == 'TYPE_node_form') {
$form['options']['status']['#default_value'] = 1;
// }
}
即使未选中发布选项,也会导致将节点设置为已发布。
编辑:阅读评论后,我建议您使用其他行为。您可以将function MYMODULE_node_presave($node) {
$node->status = NODE_PUBLISHED;
}
附加到?from-email
,然后在drupal_goto()
中添加自定义提交,然后在hook_form_alter()
中比较原始节点和发布的值如果检测到更改,则强制hook_node_presave()
:
当您来自电子邮件时,请将status
更改为:
drupal_goto()
在drupal_goto("node/$node->nid/edit", ['query' => ['from-email' => 1]]);
中,检查网址是否包含hook_form_alter()
,添加自定义处理程序:
from-email
自定义处理程序:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if (isset($_GET['from-email'])) {
// add at the first place to the list of handlers:
array_unshift($form['actions']['submit']['#submit'], 'MODULE_my_custom_submit_handler') ;
}
}