We’ve put together a community ‘news magazine’ website for our neighborhood that makes extensive use of collections. In fact, every page on the site is a dynamic page, and I think that’s what makes the site interesting as an Editor X example.
I’m going to talk about the site from the perspective of collections and how we use them. Using collections makes this site easy to maintain and update.
The site is here: https://www.lnfweekly.info
(The neighborhood, by the way, is in downtown San Antonio. It’s a historic neighborhood that is a center for the arts and is also an entertainment district)
Issues — the ‘magazine’ is published monthly right now, and each monthly issue is based on a record in the ‘issues’ collection. Each issue record consists of the issue date, issue number, and a ‘cover’ image which is used as a background on the home page. It also contains a boolean field (isCurrent) which is used to designate the currently displayed issue and which drives the filters for most other datasets.
Stories — each article we present in the magazine is a record in the ‘stories’ collection. Each story is connected (via a referral field) to a single issue record and to an author (voice) record. The stories are assigned to one of three categories (story, news, or voice) and can be displayed in different ways depending on the category.
Voices — these are the people who author the content.
Artwork — we promote local artists, and each issue of the magazine carries at least two pieces of art.
Events — we have a page that highlights key art and entertainment events coming up in the next week or so; the list is updated daily, using Velo code.
Places — this is a collection of neighborhood restaurants and bars and is used to populate our ‘Eat + Drink’ page. In the future, it will also include retail shops and art galleries.
Here’s a listing of our key pages, along with a description of how each page is driven by datasets.
Our homepage (also called the ‘front page’) uses six datasets.
The primary dataset is the ‘ Current Issue’ dataset . It selects one record from the ‘Issues’ collection (the one marked as the ‘current issue’), and that selection drives everything else on the page.
The other datasets select story and artwork records to display in the page’s multiple repeaters. There is one dataset for the ‘ featured ’ story, another for artwork , and additional datasets for each category of stories (story, voice, and news).
The great thing about this page is that we can change everything simply by marking a different ‘issue’ record as the current issue. When we do that, the background image changes and all the stories and artwork change, too.
In fact, changing the current issue changes dataset filtering throughout the site.
Here’s an image of the prior issue home page. To change from this version to the current version just required changing the issue record that was marked as current. When the issue is changed, the artwork and all the stories change.
To prepare and preview our upcoming issue, we have a password-protected version of the home page that selects a different (upcoming) issue, thus setting a different background image and story selection, so we can preview the next issue before we ‘publish’ it.
The ‘voices’ page lists the people who contribute their artwork and articles to the publication.
We use two repeaters (and three datasets) on this page. Once again, we have an ‘issues’ dataset that selects the current issue record. Then we have a ‘current voices’ dataset that selects those people who appear in that current issue, plus an ‘all voices’ dataset that selects all our contributors — both past and current.
If you click a name on the Voices page, you’ll go to a profile for that contributor that includes a list of the stories or artworks we have published from that contributor.
Once again, we use datasets to determine which stories and artwork get displayed. We rely on the ‘current issue’ selection to make sure we don’t list something from an unpublished in-the-works issue. (We don’t use the native ‘published / draft’ field, because it would prevent us from previewing the upcoming issue).
We publish a weekly email newsletter that covers more than one hundred art and entertainment events happening in our near-downtown area in the coming week. The ‘events’ page of our site highlights a dozen of those events.
Our events collection, at any given time, contains twenty or more upcoming events, and we use Velo code to select which ones are displayed each day.
For each event, in its collection record, we specify the date on which we want the event to begin displaying and the date after which it will no longer display. Our Velo code selects the items to display based on the current date.
We have an archive page that lists stories from prior issues of the ‘magazine’. ( As of this writing, there is one previous issue, plus a handful of stories from a previous website).
We use the ‘issues’ dataset to provide selection criteria to the ‘stories’ dataset, so that repeater displays only stories from prior issues. There’s some Velo code to drive the ‘older stories’ and ‘newer stories’ buttons.