1

したがって、X (無制限) のノードを作成したユーザーがいるというかなり特殊な状況がありますが、一度に公開できるノードは 6 つだけです。

しばらくグーグルで検索したところ、 http://www.badzilla.co.uk/Drupal-7--Node-Limit-Publish-Moduleが見つかりました。これは、特定のコンテンツの公開ノードの総数を制限することを除いて、非常にうまく機能しますタイプ。

ユーザーごとの追加の制限を除いて、この正確な機能が必要です... Drupal サイト全体が特定のコンテンツ タイプの合計 X のみを持つのではなく、各ユーザーが一度に公開できる合計ノード数は 6 つだけです。一気に公開。

それが理にかなっていることを願っています...にもかかわらず、上記の URL のコード/モジュールは正確にうまく機能しています。ユーザーごとにチェックするようにケータリングする必要があるだけです! 私はモジュールのコーディングなどは得意ではないので、誰かがそのサイトのモジュール コードを変更する方法を少し手伝えることができれば、それは素晴らしいことです! ティア

4

2 に答える 2

2

特定のコンテンツ タイプの PUBLISHED ノードの数を制限する必要があるという同じ問題に出くわした人のために、私の友人が上記のリンクされた Badzilla モジュールを変更し、次のように微調整しました。モジュールの基礎を提供してくれた Badzilla と、公開されたノードのサイト全体ではなくユーザーごとにチェックするように微調整してくれた私の友人に感謝します。

    <?php

/*
 * File         : node_limit_publish.module
 * Title        : Limits the number of concurrently published node types dependent upon admin configurable limits
 * Sponsor      : Hangar Seven Digital
 * Author       : Badzilla www.badzilla.co.uk @badzillacouk
 *
 * This work is copyright Badzilla under the GPL licence terms and conditions
 *
 */






/**
* Implementation of hook_menu().
*
*/
function node_limit_publish_menu() {

    $items = array();

    $items['admin/config/content/node_limit_publish'] = array(
        'title' => 'Limit Number of Published Nodes per Node Type',
        'description' => t('Zero represents an unlimited amount of published nodes'),
        'page callback' => 'drupal_get_form',
        'page arguments' => array('node_limit_publish_admin_settings'),
        'access arguments' => array('administer node_limit_publish'),
        'type' => MENU_NORMAL_ITEM,
    );

    return $items;
}






function node_limit_publish_admin_settings() {

    $form = array();

    if (is_array($types = node_type_get_types())) {

        $form['title'] = array(
            '#markup' => t('Zero represents an unlimited amount of published nodes'),
        );

        foreach($types as $key => $value) 
            $form['node_limit_publish_'.$key] = array(
                '#type' => 'textfield',
                '#description' => $key,
                '#size' => 4,
                '#maxlength' => 10,
                '#element_validate' => array('node_limit_publish_is_numeric'),
                '#default_value' => variable_get('node_limit_publish_'.$key, 0),                
            );
    }

    return system_settings_form($form);
}




function node_limit_publish_is_numeric($element, &$form_state, $form) {

    if (!is_numeric($element['#value']))
        form_error($element, t('This field must be numeric'));
}





/**
* Implementation of hook_presave().
*
*/
function node_limit_publish_node_presave($node) {
    global $user;

    // Get the limit on this type
    if (($limit = variable_get('node_limit_publish_'.$node->type, 0)) and $node->status == 1) {
        // now check whether we have reached our maximum
        $query = db_select('node')
            ->condition('type', $node->type)
            ->condition('status', 1)
                        ->condition('uid', $user->uid);
        if (isset($node->nid))
            $query->condition('nid', $node->nid, '!=');
        $count = $query->countQuery()
            ->execute()
            ->fetchField();
        if ($count >= $limit) {
            $node->status = 0;
            // use %type for dynamic node type
            drupal_set_message(t('Sorry, the maximum of this node are active already. You must first disable another!', array('%type' => $node->type)), 'warning');
        }
    }
}
于 2013-03-04T15:46:56.750 に答える
0

ノード制限はあなたが求めているものです...

ノード制限モジュールを使用すると、管理者は、役割またはユーザーが作成できる特定のタイプのノードの数を制限できます。たとえば、サイトに「広告」ノードを作成できる「広告主」ロールがある場合、ノード制限管理者はそのロールのすべてのユーザーを特定の数のノードに制限できます。また、ユーザーごとにユーザーを制限することもできます。

于 2013-03-01T20:22:35.573 に答える