1
我的網站上,我有三個角色:限制用戶可以通過角色在Drupal中創建的某些類型節點的總數量?
- 角色1
- 角色2
- 角色3
角色1只可曾經有型 「NODE_TYPE」 的10個節點。 角色2可能只有100個類型爲「NODE_TYPE」的節點。 角色3可能只有1000個類型爲「NODE_TYPE」的節點。
我可以用什麼來強制執行此操作?下面的模塊不會做的伎倆:
- node_limit
- 用戶配額
有人嗎?
我的網站上,我有三個角色:限制用戶可以通過角色在Drupal中創建的某些類型節點的總數量?
角色1只可曾經有型 「NODE_TYPE」 的10個節點。 角色2可能只有100個類型爲「NODE_TYPE」的節點。 角色3可能只有1000個類型爲「NODE_TYPE」的節點。
我可以用什麼來強制執行此操作?下面的模塊不會做的伎倆:
有人嗎?
如何實現這在很大程度上取決於NODE_TYPE
的創建方式。 假設你有一個NODE_TYPE
模塊,你可以做這樣的事情落實hook_validate:
function NODE_TYPE_validate($node, &$form) {
if (NODE_TYPE_reached_post_limit()) {
form_set_error('form_name', t('You have reached your post limit'));
}
}
function NODE_TYPE_reached_post_limit() {
global $user;
//Write code to do the following:
//-> Check which group $user belongs to
//-> Create query to see how many posts $user has made
//-> Return true if $user has reached the limit
}
如果您沒有訪問該創建NODE_TYPE
您可以創建一個新的模塊並實現hook_nodeapi模塊:
function yournewmodule_nodeapi(&$node, $op) {
switch ($op) {
case 'validate':
if ($node->type == "NODE_TYPE" && yournewmodule_reached_post_limit()) {
form_set_error('form_name', t('You have reached your post limit'));
}
break;
}
}
function yournewmodule_reached_post_limit() {
global $user;
//Write code to do the following:
//-> Check which group $user belongs to
//-> Create query to see how many posts $user has made
//-> Return true if $user has reached the limit
}
我不是100%確定validate
是最好的掛鉤來實現,但它肯定是一個選項。
這可能是比我所做的更好的解決方案。我使用了另一個稱爲user_quota的模塊,它可以工作,但現在每次節點被刪除時,我都必須增加該人的配額。 – coderama 2009-09-09 10:18:23