See: User stories on personalization & content pools
Story | User/developer actions | Implementation details |
---|---|---|
Publish and feature an article on a magazine site | ||
(Story 1.1) As managing editor, I can create and maintain the page tree structure of our site. This simple tree basically consists only of a home page plus a separate page for every section of my magazine site. All section pages possibly use the same page template, but I'm actually free to choose that. | Developer:
Managing editor:
| |
(Story 1.2) As managing editor, I assign one or more categories to every section page from a pre-defined taxonomy. Depending on these categories, a section page pulls matching articles from a pool of articles. Articles aggregated like this are available as separate pages below the section page. Articles may also show up in overviews or teasers on the section page. | Developer:
Managing editor:
NOTE: Content should only be available on one URL! | SELECT e.* FROM [mgnl:articles] AS e WHERE e.categories IN ('page-category-A', 'page-category-B'); |
(Story 1.3) As a journalist, I write my articles in a dedicated app. Once written, I tag my articles with "topics" and "interests" by assigning them categories from a predefined taxonomy. These categories may then be used to show my articles on any web page or any channel an editor may want them to show up in. | Developer:
Journalist:
| |
(Story 1.4) As a journalist, I can view my article directly in the same app I write them in. I get a read-only view that applies some basic formatting for easier reading. I actually don't get a preview showing what they will look like on the actual site, since that's typically not of interest to me, but concerns more our staff in the editorial department. | Developer:
| |
(Story 1.5) As editor, I review and proof read articles in the same app that journalists use to write them. I also use the same read-only view with basic formatting that is available to journalists, but I may also have diff views helping me with my task. | Developer:
| |
(Story 1.6) As editor, I can preview articles as they will look when published. Since articles may be published in several sections, I can preview them using all the page templates that they may show up in. | Developer:
| |
(Story 1.7) As editor, I may edit the structure of our pages using Magnolia's page editor and its areas and components. I do rarely change a page, though, once I've created it, since most publishing is done directly by articles being published from the articles pool. | Editor:
| |
(Story 1.8) As managing editor, I can feature or otherwise emphasize certain articles in an overview such as those shown on a section page, by flagging such articles in the article pool. | Developer:
Managing editor:
| |
Show a list of events | ||
(Story 2.1) | Developer:
Managing editor:
| SELECT e.* FROM [mgnl:events] AS e ORDER BY e.date ASC; |
(Story 2.2) As managing editor, I can show a list of events on an events overview page by selecting one or several event categories. All events with these categories will then be pulled from the pool of events and will be shown in chronological order, with upcoming events coming first, up to a configurable maximum of events. | Developer:
| SELECT e.* FROM [mgnl:events] AS e WHERE e.categories IN ('selected-category-A', 'selected-category-B') ORDER BY e.date ASC; |
(Story 2.3) As author, I can assign topics to events by assigning them one or several categories. I also use categories to mark events as being interesting for users with certain interests or from a specific country. | Developer:
Author:
| SELECT e.* FROM [mgnl:events] AS e WHERE e.categories IN ('selected-category-A', 'selected-category-B') AND e.tagged in ('trait-interest-A') ORDER BY e.date ASC; |
Feature certain events in a teaser | ||
(Story 3.1) As managing editor, I can flag events in the events pool by assigning them a specific category. I can then configure some teasers on the event overview page to only show events with the same category assigned in order to feature them. | Developer:
| SELECT e.* FROM [mgnl:events] AS e WHERE e.categories IN ('featured-category-A', 'featured-category-B') ORDER BY e.date ASC; |
(Story 3.2) | Developer:
| |
The personalized home page | ||
(Story 4.1) As a marketing manager, I'd like to offer two specialized alternatives of our home page: one should be of better use for our more business-oriented, one for our technology-focused users. For all other visitors, I'd like to keep our otherwise convincing home page. I thus create two variants of that page for my new audiences. I then make the necessary changes to both and finally specify for every variant, to which audience it should mainly show. | Developer:
User:
| Developer has to create two segments by using the TraitVoters that have been made available in the system. He has to combine the voters with other to get the resulting segements. |
(Story 4.2) As known user with business interests, I get to see the business-oriented home page variant. As known user with a focus on technology, I get to see the home page written for a technical audience. As regular visitor, I get to see the home page as it was originally written. | Developer:
| |
(Story 4.3) As a regular visitor, I can register with the site and then become a known user. In my user profile, I can specify my interests as well as my position in the company I work for. This allows the site owner to target content to me specifically - I'm informed by the site's privacy policy about all possible uses of that information. | Developer:
| |
The localized campaign page | ||
(Story 5.1) As a marketing manager, I'm planning a new campaign for the relaunch of our main product line. Since we have adapted the product to work in several regions of the planet, I create a localized campaign page variant for every major market area, then specify for every variant to which visitors it should only show. | Developer:
Marketing manager:
| The segments will have to be created by using TraitVoters. The respective Trait and its Voters (in this case GeoIP-enabled) have to be created beforehand. |
(Story 5.2) As a visitor coming from a particular country, I only get to see the localized variant of the campaign page advertising the relaunched product. | Developer:
| Developer creates a TraitVoter that adds the country of a visitor to the AggregationState by using i.e. GeoIP. |
A page with localized content | ||
(Story 6.1) As a marketing manager, I want to make sure our existing home page shows content relevant to our visitors. Our list of customers on that page is currently static, however. I want to change that in order to show customers that are relevant to the geographic region a visitor is coming from. I enable geo localization on the page or the list of customers directly and get clear signals everywhere informing me that the home page now hosts and shows personalized content. | See Story 5.1 Developer:
| |
(Story 6.2) As an asset editor, I add a set of company logos representing some customers that are using our product. I mark these image assets with geo tags - only rough "region" tags that tell what country or region the corresponding company is located in. That allows us to only show these logos to selected visitors later on. | Developer:
Asset editor:
| |
Seeing mainly events that may interest me | ||
(Story 7.1) As registered user, I get to see a list of events in the events overview page, which could be of interest to me. This is determined by matching the interests stored in my personal profile with the interests that an event has been flagged with. I can still decide to see other events as well, but I get to see a personalized list by default. | Developer:
| SELECT e.* FROM [mgnl:events] AS e WHERE e.tags IN ('tag-A', 'tag-B', 'tag-C'); Where the tags will be selected from AggregationState's trait. |
(Story 7.2) As author, I can flag an event as being of interest to a particular audience, or I can manually pick a set of interests and assign these to an event in the pool. | Author:
| |
Show me all events near me | ||
(Story 8.1) As a visitor of the events overview page, I can filter the list of events being shown there to only include events which are closed to where I currently am. I can also pick a range to further narrow down or extend that list. | Developer:
|