Making a few assumptions, but there are a couple of ways you could accomplish this.
Assuming first that "Partners, etc" are user roles.
If you have one announcement at a time and don't care to create an historical record of announcements:
Create a new custom component
Create a new text key for each role (ie custom.announcement.Partner)
In the component, check the user's role and display the appropriate text key within whatever mark up you design. ${text.format("custom.announcement."+${user_role})}
Also, check to see if the text key has content so you only display the mark up if there is an announcement to display. When you have no announcement, set the text key to custom.announcement.Partner =
If you could have multiple announcements for a given role and/or you want to keep an historical record of announcements:
Create a new forum for each role that will have targeted announcements. Set appropriate permissions on the forums so only the targeted roles can see content. Using a naming convention for the ids can help with future proofing (Partner-announcements)
Create a new component that checks the user role and pulls X number of most recent results from the target forum using an APIv2 search and LiQL . You may also want to add a post_time constraint, so you don't display announcements that are older than, say 7 days.
Loop over query results and build out display markup if any results exist.
Hopefully, this helps or gives you some better ideas!
... View more