it-swarm-vi.com

Chỉ hiển thị bài viết của người dùng hiện tại trong chế độ xem danh mục bằng cách sử dụng plugin

Xin chào, tôi đang cố gắng viết một plugin nội dung sẽ chỉ hiển thị các bài viết được viết bởi người dùng hiện đang đăng nhập trong chế độ xem danh mục.

Sử dụng các kích hoạt onContentPrepare và onContentB BeforeDisplay tôi có thể xác định người dùng hiện đang đăng nhập và liệu bài viết có thuộc về họ khá đơn giản không.

Bước tiếp theo Không hiển thị bài viết phức tạp hơn nhiều và tôi không thể tìm ra nó.

Vì vậy, có cách nào để dễ dàng KHÔNG hiển thị một bài viết bằng cách sử dụng các trình kích hoạt plugin này không?

Chắc chắn, đây là mã:

function onContentBeforeDisplay($context, &$article, &$params, $limit=0)
     {

            $name = JFactory::getUser()->name;
            $author = $article->author;
            if ($author != $name) {
                /*  ?   */
            }

            // var_dump($article);
            // var_dump($params);
            // var_dump($context);
            return "";
    }
1
jalbasri

Bạn không cần một plugin cho điều đó. Chỉ cần ghi đè chế độ xem danh mục và đặt séc của bạn ở đó.

Ví dụ: ghi đè chế độ xem Blog blog.php và khoảng dòng 60, hãy kiểm tra:

if ($item->created_by == JFactory::getUser()->id) :
    echo $this->loadTemplate('item');
}
endif;

Tất nhiên đó chỉ là một ví dụ, nhưng nó cho thấy sức mạnh của việc ghi đè. Hy vọng điều này sẽ giúp.

4
Dmitry Rekun

Một mình plugin không thể giải quyết vấn đề nhưng nó có thể được sử dụng để thêm một trường có người dùng hiện đang đăng nhập vào các tham số bài viết và trong chế độ xem danh sách danh mục được tạo đơn giản nếu câu lệnh được yêu cầu để ngăn thêm bài viết của người dùng khác.

Mã plugin:

function onContentBeforeDisplay($context, &$article, &$params, $limit=0)
     {
            $name = JFactory::getUser()->name;
            $article->logged_in = $name;
            // var_dump($params);
            return "";
     }

Tôi đã thử $ params-> set ('log_in', $ name); nhưng nó không hoạt động trong chế độ xem nên tôi phải thêm nó vào tham số $ article.

Chế độ xem để chỉnh sửa là j Joomla/thành phần/com_content/lượt xem/danh mục/tmpl/default_article.php

bên dưới dòng này:

<?php foreach ($this->items as $i => $article) : ?>

thêm vào

<?php if ($this->items[$i]->author == $this->items[$i]->logged_in) : ?>

đóng câu lệnh if ở phía dưới và bây giờ nó sẽ chỉ hiển thị các bài viết được cho phép bởi người dùng hiện tại.

Chỉnh sửa:

Nhờ câu trả lời của Dimitri, giờ đây tôi thấy bạn sẽ có thể truy cập trực tiếp vào người dùng trong các tệp xem mà không cần plugin và bạn nên sử dụng ghi đè thay vì trực tiếp sửa đổi các tệp xem.

1
jalbasri