В списке категорий отображаются только объекты, принадлежащие зарегистрированному пользователю.
Я хотел бы иметь возможность предоставить представление "Список категорий", в котором отображаются только статьи, принадлежащие зарегистрированному в данный момент пользователю.
Где-нибудь я могу отредактировать запрос, используемый для заполнения представления списка категорий, или расширения, обеспечивающего эту функциональность.
Спасибо за любую помощь, которую вы можете предоставить. -J.
Спасибо за ваш ответ. Я написал плагин. Вместо передачи массива Article для каждой статьи вызывается функция onContentBeforeDisplay, и передается ArrayObject отдельной статьи. Я смог определить статьи, которые я не хочу отображать, но все еще не могу заставить их не отображать,
Переменная $params имеет такие значения, как "list_show_xxx", но я не могу изменить или получить к ним доступ.
вот var_dump($params):
object(Joomla\Registry\Registry)#190 (1) { ["data":protected]=> object(stdClass)#250 (83) { ["article_layout"]=> string(9) "_:default" ["show_title"]=> string(1) "1" ["link_titles"]=> string(1) "1" ["show_intro"]=> string(1) "1" ["info_block_position"]=> string(1) "1" ["show_category"]=> string(1) "1" ["link_category"]=> string(1) "1" ["show_parent_category"]=> string(1) "0" ["link_parent_category"]=> string(1) "0" ["show_author"]=> string(1) "1" ["link_author"]=> string(1) "0" ["show_create_date"]=> string(1) "0" ["show_modify_date"]=> string(1) "0" ["show_publish_date"]=> string(1) "1" ["show_item_navigation"]=> string(1) "1" ["show_vote"]=> string(1) "0" ["show_readmore"]=> string(1) "1" ["show_readmore_title"]=> string(1) "1" ["readmore_limit"]=> string(3) "100" ["show_tags"]=> string(1) "1" ["show_icons"]=> string(1) "1" ["show_print_icon"]=> string(1) "1" ["show_email_icon"]=> string(1) "1" ["show_hits"]=> string(1) "1" ["show_noauth"]=> string(1) "0" ["urls_position"]=> string(1) "0" ["show_publishing_options"]=> string(1) "0" ["show_article_options"]=> string(1) "0" ["save_history"]=> string(1) "1" ["history_limit"]=> int(10) ["show_urls_images_frontend"]=> string(1) "0" ["show_urls_images_backend"]=> string(1) "1" ["targeta"]=> int(0) ["targetb"]=> int(0) ["targetc"]=> int(0) ["float_intro"]=> string(4) "left" ["float_fulltext"]=> string(4) "left" ["category_layout"]=> string(9) "_:default" ["show_category_heading_title_text"]=> string(1) "1" ["show_category_title"]=> string(1) "0" ["show_description"]=> string(1) "0" ["show_description_image"]=> string(1) "0" ["maxLevel"]=> string(1) "1" ["show_empty_categories"]=> string(1) "0" ["show_no_articles"]=> string(1) "1" ["show_subcat_desc"]=> string(1) "1" ["show_cat_num_articles"]=> string(1) "0" ["show_base_description"]=> string(1) "1" ["maxLevelcat"]=> string(2) "-1" ["show_empty_categories_cat"]=> string(1) "0" ["show_subcat_desc_cat"]=> string(1) "1" ["show_cat_num_articles_cat"]=> string(1) "1" ["num_leading_articles"]=> string(1) "1" ["num_intro_articles"]=> string(1) "4" ["num_columns"]=> string(1) "1" ["num_links"]=> string(1) "4" ["multi_column_order"]=> string(1) "0" ["show_subcategory_content"]=> string(1) "0" ["show_pagination_limit"]=> string(1) "1" ["filter_field"]=> string(5) "title" ["show_headings"]=> string(1) "1" ["list_show_date"]=> string(1) "0" ["date_format"]=> string(0) "" ["list_show_hits"]=> string(1) "1" ["list_show_author"]=> string(1) "1" ["orderby_pri"]=> string(5) "order" ["orderby_sec"]=> string(5) "rdate" ["order_date"]=> string(9) "published" ["show_pagination"]=> string(1) "2" ["show_pagination_results"]=> string(1) "1" ["show_feed_link"]=> string(1) "1" ["feed_summary"]=> string(1) "0" ["feed_show_readmore"]=> string(1) "0" ["display_num"]=> string(2) "10" ["menu_text"]=> int(1) ["show_page_heading"]=> int(0) ["secure"]=> int(0) ["page_title"]=> string(16) "Non-K2 News List" ["page_description"]=> string(33) "BBIC" ["page_rights"]=> NULL ["robots"]=> NULL ["access-edit"]=> bool(true) ["access-view"]=> bool(true) } }
Я попытался $params->data->list_show_author = "0", но затем страница не загружается, проблема в доступе и изменении переменных в $param.
Итак, последний шаг - выяснить, как не показывать статью. Есть идеи?
1 ответ
Посмотрите здесь: http://docs.joomla.org/Plugin/Events/Content
Вам нужно написать плагин. Используйте этот триггер события onContentBeforeDisplay
С $context
Переменная вы можете проверить, что на самом деле отображается, чтобы вы могли узнать, если это представление списка категорий. Если это так, вы можете сделать некоторые манипуляции.
$article
Переменная содержит статьи, которые отображаются. Вам нужно будет заглянуть в $params
переменной и проверьте, принадлежит ли идентификатор пользователя статьи пользователю. Пользовательский идентификатор текущего пользователя может быть доступен следующим образом: JFactory::getUser()->id
Отключите любую статью, которая не принадлежит пользователю (вам, вероятно, придется пройтись по ней, поскольку статьи, вероятно, хранятся в массиве).
Совет от профессионала: начало использования var_dump
на все аргументы, которые передаются onContentBeforeDisplay