首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >drupal节点在编辑模式下通过链接(包括属性)将发布选项更改为已发布?drupal_goto

drupal节点在编辑模式下通过链接(包括属性)将发布选项更改为已发布?drupal_goto
EN

Stack Overflow用户
提问于 2018-03-23 11:22:29
回答 1查看 321关注 0票数 1

是否可以在编辑模式下加载节点并将发布选项设置为已发布?

代码语言:javascript
运行
复制
drupal_goto("node/$node->nid/edit");

因此,用户不必手动设置该选项,只在用户单击“保存”(节点设置为“未发布”)时才将其保存为已发布的选项。

我想替换编程方法,因为它还保存在编辑模式之前。

代码语言:javascript
运行
复制
$node->status = NODE_PUBLISHED;
node_save($node);

FYI“发布选项”字段

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 08:38:08

您可以使用hook_form_alter()更改表单:

代码语言:javascript
运行
复制
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
    // if ($form_id == 'TYPE_node_form') {
        $form['options']['status']['#default_value'] = 1;
    // }
}

因此,将检查发布选项。

您可以使用hook_node_presave()更改节点属性(提交时):

代码语言:javascript
运行
复制
function MYMODULE_node_presave($node) {
    $node->status = NODE_PUBLISHED;
}

这将导致将节点设置为已发布,即使未选中发布选项。

编辑:在阅读完评论后,我建议您使用另一种行为。您可以将?from-email附加到drupal_goto()中,然后在hook_form_alter()中添加自定义提交,然后在hook_node_presave()中比较原始节点和已发布值的值,如果检测到更改,则强制status

  1. 当您从电子邮件中来时,将您的drupal_goto()更改为: drupal_goto("node/$node->nid/edit",['query‘=> 'from-email’=> 1]);
  2. 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');}}
  3. 自定义处理程序: 函数MYMODULE_my_custom_submit_handler($form,&$form_state) { $nid =$form_state‘$nid;$node = node_load($nid);//调试: // var_dump($form_state’false,$node);死;//检查diff $to_publish =false;if ($node->title != $form_state‘false) $to_publish = true;如果($node->body‘und’value‘!= $form_state’value‘und’value‘) $to_publish = true;//等等.如果($to_publish) { //强制状态为1.$form_state‘’values‘= 1;}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49448542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档