【问题标题】:Access limit a node after a certain period of time一定时间后限制访问节点
【发布时间】:2018-07-30 09:54:23
【问题描述】:

我希望能够在每天之后拥有某种类型的节点“拒绝访问” 如果用户角色是PRO,只有2次可以编辑节点,每次用户角色是ADVANCE,每天可以编辑节点10次

实现此结果的最佳方法是什么?

function MY_MODULE_check_node_access($op, $node){
  global $user;
  // Note $op and $node are passed in default node_menu access arguments
  // Allow bypass by users with administer nodes permission
  if (($op == 'update') && (!user_access('administer nodes'))) {
  // Allow edit access to node author if within time limit
  if ($user->uid == $node->uid) {
  $limit = variable_get('node_edit_limit', (15 * 60));
  if ((REQUEST_TIME - $node->created) > $limit) {
    drupal_set_message(t('Edit time limit exceeded'));
    return FALSE;
  } else {
    return TRUE;
  }
}
}     
 // Fallback to regular node_access checks
  return node_access($op, $node);
  }

【问题讨论】:

    标签: php drupal drupal-7


    【解决方案1】:

    钩子是 hook_node_access https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_node_access/7.x 所以你的函数应该命名为 MY_MODULE_node_access($op, $node)

    你也不必实现 hook_menu_alter Drupal 菜单项被缓存,因此没有必要在每个请求上尝试评估它们。 然而仅仅实现 hook_node_access 就足够了 最后不返回 TRUE 和 FALSE,而是返回 NODE_ACCESS_IGNORE 和 NODE_ACCESS_DENY。在上面的链接中查看 hook_node_access 的文档

    【讨论】:

    • 谢谢你的回答我的朋友!
    • 我可以设置限制吗?每天2次?
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多