it-swarm-vi.com

Làm cách nào để người dùng không xuất bản và xuất bản nội dung của riêng họ?

Tôi muốn cho phép người dùng không xuất bản và xuất bản nội dung của riêng họ. Theo mặc định, bạn phải cấp quyền "quản trị nút" cho người dùng để có thể hủy xuất bản hoặc xuất bản nội dung. Đó là cách để mặc dù rộng. Tôi muốn cho phép người dùng hủy xuất bản hoặc xuất bản một nút nếu và chỉ khi họ tạo nó. Điều này cũng có nghĩa là họ sẽ có thể xem các nút chưa được công bố nếu và chỉ khi họ tạo nó.

30
Chaulky

Cách tiếp cận giao diện người dùng mà tôi đã sử dụng trên một số trang web là Ghi đè Node Tùy chọn , thêm các quyền tương tự như các câu trả lời khác mà tôi cung cấp, cộng thêm một bó.

20
Decipher

Chúng tôi luôn sử dụng mô đun Xuất bản nội dung cho việc đó. Nó thêm một số quyền hạn chi tiết và một tab xuất bản/không xuất bản trên các nút.

Mô-đun này

  • cho phép xuất bản dạng hạt và quyền không xuất bản: [.__.]
    • toàn cầu (bỏ/xuất bản bất kỳ nội dung)
    • mỗi "loại nút" (bỏ/xuất bản bất kỳ nội dung [gật đầu] nào)
    • trên mỗi người dùng (un/xuất bản nội dung [gật đầu]
  • thêm tab "Xuất bản/Chưa xuất bản" vào trang nút cho một lần nhấp un/xuất bản.
  • hiển thị các liên kết xuất bản/chưa xuất bản đến các chế độ xem của bạn, giúp dễ dàng hợp lý hóa quy trình công việc cho người đánh giá, người chỉnh sửa và nhà xuất bản.
  • là nhẹ và luôn luôn sẽ được.
20
marcvangend

Tôi khuyên bạn nên sử dụng Mô-đun sửa đổi mang lại cho bạn một vài lợi ích so với các phương pháp trên. Tất nhiên, đó là một mô-đun được bảo trì đầy đủ và do đó sẽ có rất nhiều con mắt về mã và rất nhiều sửa lỗi. Hai, bạn sẽ nhận được nhiều tính năng hơn để phù hợp với quy trình công việc chung của bạn.

Đối với trường hợp sử dụng của bạn, cung cấp cho người dùng của bạn cả quyền "người tạo" và quyền "người điều hành", để về cơ bản họ có thể kiểm duyệt nội dung của mình, nhưng như đã nói trong mô tả mô-đun, họ không được ban cho những sức mạnh giống như thần, như đưa ra 'các nút quản trị' sẽ cho.

9
coderintherye

Có một mô-đun làm điều này, nhưng tôi không thể nhớ tên. Tôi thực sự cảm thấy rằng cách tiếp cận mà mô-đun thực hiện quá cồng kềnh, nó có rất nhiều mã khi mã quan trọng thực sự chỉ thực sự là một dòng được bao bọc bởi một số logic cho phép.

Đây là phiên bản mã của tôi:

function MYMODULE_perm() {
  $perms[] = 'administer status of any content';

  foreach (node_get_types() as $type) {
    if (isset($type->type)) {
      $perms[] = 'administer status of any '. check_plain($type->type) .' content';
      $perms[] = 'administer status of own '. check_plain($type->type) .' content';
    }
  }

  return $perms;
}

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#id'] == 'node-form' && $form_id == "{$form['#node']->type}_node_form" && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

Điều đó bổ sung thêm một số quyền cho phép bạn cho phép người dùng xuất bản/hủy xuất bản của riêng họ hoặc tất cả các loại nội dung và tất cả các loại nội dung, đặt theo cách bạn muốn.

6
Decipher

Tôi chỉ muốn cập nhật câu trả lời Giải mã, phù hợp với tôi cách tiếp cận tốt nhất nếu bạn không muốn thêm mô-đun khác, để phù hợp với Drupal 7:

/**
 * Implements hook_permission().
 */
function MYMODULE_permission() {  
  $perms = array(
    'administer status of any content' => array(
      'title' => t('Administer status for all content type'),
      'description' => t(''),
      'restrict access' => true
    ),
  );

  foreach (node_type_get_types() as $type) {
    if (isset($type->type)) {
      $perm_types = array(
        'administer status of any '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of any '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),

        'administer status of own '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of own '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),
      );
      $perms = array_merge($perms,$perm_types);
    }
  }

  return $perms;
}


function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if (preg_match('/_node_form$/', $form_id) && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}
3
anou

Bạn có thể đạt được điều này bằng cách kết hợp sức mạnh của các mô đun FlagRules .

  1. Tạo Cờ mới Xuất bản và cấp cho người dùng quyền chỉ gắn cờ nội dung của riêng họ.
  2. Tiếp theo, thêm một Quy tắc mới kích hoạt khi một nút được gắn cờ và xuất bản nút được gắn cờ. Tương tự, tạo Quy tắc thứ hai hủy xuất bản các nút không được lưu trong Xuất bản .
  3. Cuối cùng, cung cấp cho người dùng quyền xem các nút chưa được công bố của riêng họ và thêm liên kết Xuất bản vào các trang của nút.
0
Jeroen