是否可以在编辑模式下加载节点并将发布选项设置为已发布?
drupal_goto("node/$node->nid/edit");因此,用户不必手动设置该选项,只在用户单击“保存”(节点设置为“未发布”)时才将其保存为已发布的选项。
我想替换编程方法,因为它还保存在编辑模式之前。
$node->status = NODE_PUBLISHED;
node_save($node);FYI“发布选项”字段
<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>发布于 2018-03-24 08:38:08
您可以使用hook_form_alter()更改表单:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
// if ($form_id == 'TYPE_node_form') {
$form['options']['status']['#default_value'] = 1;
// }
}因此,将检查发布选项。
或:
您可以使用hook_node_presave()更改节点属性(提交时):
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()中,检查URL是否包含from-email,添加一个自定义处理程序:
函数MYMODULE_form_alter(&$form,&$form_state,$form_id) { if (isset($_GET‘’from email‘)){ //首先添加到处理程序列表:array_unshift($form’‘actions’#submit‘,'MODULE_my_custom_submit_handler');}}https://stackoverflow.com/questions/49448542
复制相似问题