Làm thế nào để tôi có thể lập trình một nút danh sách mà người dùng có thể cập nhật?


7

Tôi muốn xây dựng một danh sách các nút mà người dùng hiện tại có thể cập nhật. Điều này sẽ được sử dụng trong một trang web bằng cách sử dụng Nhóm hữu cơ.

Hy vọng đầu tiên của tôi là sẽ có một bộ lọc Lượt xem có thể kiểm tra xem nội dung có thể chỉnh sửa được không. Than ôi, không.

Nỗ lực thứ hai của tôi là sử dụng EFQ:

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'suggested_listing')
    ->addMetaData('account', $account)
    ->addMetaData('op', 'update')
    ->addTag('node_access')
    ->pager(20);

sẽ hoạt động, nhưng có vẻ như OG không đặt cột cập nhật trong node_access?


móc nào bạn đang nhắm mục tiêu với thẻ node_access?
Bulat

Tôi nghĩ rằng EFQ được sử dụng tự động node_access để thẻ đó không cần thiết rõ ràng?
mpdon Arena

Nó không, tôi chỉ tin vào quan điểm. :-) Không bao giờ ít hơn, kiểm tra node_access chỉ hoạt động chính xác cho chế độ xem op ==.
thsutton

Câu trả lời:


2

Sau đây có thể là một cách không hiệu quả để làm điều đó so với EFQ - trước tiên bạn truy xuất các nút bằng db_select và kiểm tra từng nút bằng hàm node_access, nhưng nó hoạt động theo cách bạn muốn.

//build db query
$result = db_select('node', 'n')
        ->fields('n')->condition('status', 1)
        ->condition("type","suggested_listing", '=')
        ->execute();

        //fetch each node from database
         foreach ($result as $record) {

                $node = node_load($record->nid);
                //check if current logged in user has an update permission on the node being checked
                if(node_access('update', $node)){
                    //user has update permission to this node
                    var_dump($node->title);
                 }

    }

Bạn có thể làm điều tương tự bằng cách sử dụng Lượt xem. Cài đặt mô-đun Lượt xem PHP - https://drupal.org/project/view_php . Nó cung cấp cho bạn một bộ lọc PHP. Sau khi bạn thêm bộ lọc PHP, hãy viết mã sau đây.

 $node = node_load($data->nid);

  if(!node_access('update', $node)){
    return TRUE;
   }

nhập mô tả hình ảnh ở đây


2

Cần có một bộ lọc chế độ xem như vậy, nhưng bạn sẽ cần sử dụng mối quan hệ (Nhật ký truy cập: Người dùng nên thực hiện) sau đó thêm bộ lọc có tên Người dùng: Quyền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.