Part 1: Functional overview (How to use the solution?)

Part 1: Functional overview (How to use the solution?)


Before starting with the technical part of this solution, it is important to understand how it works from a functional point of view.  This article explains how to use the main features of the starter intranet. It can be seen as the contributor guide (people who are not necessarily already familiar with SharePoint or a little).

Overview

The PnP Office 365 starter intranet solution provides you a basic mobile intranet within Office 365/SharePoint Online. After deploying it, you can basically:

  • Create common intraneat pages like news or static pages with default page layouts adapted for a mobile use.
  • Search for pages, people (Delve) and documents within the intranet.
  • Translate your pages into multiple languages (FR an EN are supported in this example)
  • Manage your navigation menus based on the taxonomy.

This solution leverages many of SharePoint Out-Of-The-Box features so if you already know the tool, you won’t be lost ;).

Create a page (all types)

All intranet pages are stored in the « Pages » library and rely on the default SharePoint Publishing Infrastructure feature. To access this library, go to the « Site contents » and open the « Pages » library (depending on your Office 365 tenant, the UI experience may differ. In both cases, just click on the « Pages » link).

Site contents

Pages Library

« Static pages » are created in the root folder of the library and « News pages » in the « News » folder. The reason behind this is that we leverage the auto-tagging feature of SharePoint to  automatically add metadata to news, especially for a navigation purpose (this concept will be explained later in this article).

 Note: Don’t delete the existing structure!

Create a static page

A « static page » can be viewed as a simple informational page associated to a single link in navigation menus. For instance, the page « About PnP » is typically a static page. Generally, these pages are not updated very often in an intranet compared to news pages. To create a static page, go to the « Pages » library and, in the root folder, click on « New » button (1) then « Static Page » (2):

New "Static Page"

Fill a name and an URL for your page. By default, the right page layout is selected so you don’t have to change it. Then click « Create » to create the page:

"Static Page" creation

Your new page will now appear on the « Pages » library root folder. When opening the page for the first time (i.e just after the creation), you will see a warning message displayed in the breadcrumb component. This is because the current page has not been associated yet with a position in the site map. In other words, the breadcrumb doesn’t know where to put this page in the information architecture of the site. To do this, you have to tell the system the location where the page belongs to. We will explain this concept later in this article.

Breadcrumb warning message

Open the page in « edit » mode to add some content. In edit mode, you will notice the navigation menus don’t appear and fields are stacked. This is because we want to get the full space for the authoring canvas and avoid dealing with the responsive design (because it is not useful in edit mode).

"Static Page" Layout

The default page layout shows you the following fields:

  • Title  (SharePoint OOTB field): the display title of the page.
  • Publishing Date  (Custom field): the publishing date of the news. This field is purely informational with no link with the « Created » or « Modified » fields.
  • Content Author (Custom field): the owner of this page (i.e page contact). Like the publishing date, this field is purely informational with no link with the « Created By » field.
  • Scheduling Start Date (SharePoint OOTB  field): The date when to publish the page. This field comes with the « Item scheduling » feature of the library. See the publishing workflow section later in this article to understand how it works.
  • Scheduling End Date (SharePoint OOTB  field):  The date when to unpublish the page (same thing as scheduling start date).
  • Tags (Custom field): keywords about the page. This field is an open taxonomy field so you can put anything in it. Values will be used in the search page as refiners.
  • Translation control (Custom component): allows you to create a peer page of the current page for a target language. This feature will be explained in a dedicated section.
  • Site Map Position (Custom field): the position in the site map of the site for the current page.
  • Page Content (SharePoint OOTB field): the HTML content of the page.

To edit the content of the page, click on the « Page content » field . You will see the ribbon appearing with all formatting options available.

 Fill the site map position field

As we said earlier in this section, to get the breadcrumb and contextual menus work, you have to specify a position in the site map for the current page. To do this, click on the « tags » icon on the right of the « Site Map Position » field and select the correct position in the site map for this page:

Fill the Site Map Position field

Select Site Map Position

Once done, save the page to see the final result (desktop and mobile).

Display Mode Static Page (desktop)

Display Mode Static Page (mobile)

Warning: at this stage, your page has effectively a position in the site map but its URL isn’t linked with this navigation node yet. If you want your page appear in navigation menus, you have to link it to the corresponding node in the site map. See the section « Link a physical page to a navigation node« .

Create a news

The news creation process is basically the same as the static page one. The only difference is about the site map position field and some additional fields only useful for a news (like a dedicated image field). With news pages, you don’t have to specify manually a site map position. Because news pages are, by definition, dynamic contents, they don’t have be a part of the site map structure (it would be technically easier but would introduce a lot of maintenance for contributors in the site map). This is why they are all classified by default under a generic navigation nodes representing the « News » category (if you already know the « Cross Site Publishing » feature of SharePoint, this is basically the same concept excluding the URL generation part). All news are created in the « News » folder and are automatically tagged with the correct position. By this way, we don’t have to create a navigation term for each news in the intranet.

Create a news

News Page in display mode

News Page in display mode (mobile)

News pages will appear automatically on the front page after the next search crawl:

News list on front page

A link to all news (the news archive) redirects to a prefiltered search page with refiners and preview:

Search page

Understand the publishing workflow

Before making a page available to users in the intranet, you have several steps to complete. Here is the default publishing workflow for SharePoint:

SharePoint Publishing Workflow

To see the current page status, open, the « Pages » library and check the « Approval Status«  column in the default view.

Here is the location for all these actions in the interface. They are accessible in the ribbon either directly on a page on « edit » mode or in the « Pages » library default view by selecting corresponding items:

#

Action

User interface

1

Check-in (minor)

(When you want to make available the page for others for editing).

Notes:

  • Every time you check out a checked-in page, the version is increased by x.1. (minor) and the status is switched to « Draft ».

Check-In Minor Action

1 bis

Check-in (major)

(When your page is ready to be published and requires approval).

Check-In Major Action

2

Publish a page

(When your page is ready to be published). This action is only available if you have approval permissions. Otherwise, only the « Submit » button is available.

Publish Action

3

Submit a page for approval

(When you don’t have approval permissions).

Submit For Approval Action

4

Approve/Reject/Cancel a page

(Only for approvers).

Approve a page is equivalent to publish it.

Approve Reject Action

Schedule intranet content

When you create a page in the intranet (news or static page), you have the ability to control its visibility during a specific period of time (for example, remove irrelevant news in search results after a specific date). We use the « item scheduling » feature of SharePoint to do this.

Edit or create a new page from the « Pages » library. By default, the publishing period for a page starts immediately and never expires which mean that, if approved, the page will be always visible in the news list on the front page or in the search results. To control this, you can set a publishing start and end date to the page by modifying the fields value (1) & (2):

Schedule Publishing

When you specify a publishing start date  the status of the page will be set to « Scheduled » until the date is reached. Then the status switches to « Approved » and the page is visible in the intranet in search results or other components.

When you set a publishing end date  the status of the page will be set to « Draft » after the end date is reached.

Important notes:

  • Pages have to be checked in, published and approved to be viewable by users. It means that even if you’ve scheduled a page, users won’t see it until the page is approved.
  • Because pages have to be crawled first by the search engine to be displayed in the intranet, there is a little delay between the theoretical publishing start/end date and the effective display in the intranet (15 minutes maximum).

Translate a page

This solution is designed to support multiple languages and you have the ability to create a translation for each page of the intranet in the « Pages » library.

Notes:

  • By « translation », we mean an association system allowing you to switch the current page language (like variations do, but without timer jobs and useless waiting time).
  • The default page language is « English« .

Before creating a translation for a page, you have to create the original one and save it in the « Pages » library. After creating the source page, open it in « edit » mode. You will see the following control in the page layout:

Translation control

Fill a name for the target page in the selected language and click « Create a translation for ‘XX’ »

Notes:

  • You can’t use the same name as original page and you can’t use special characters  » # % * : < > ? \ / |
  • You can create translations from every language (FR to EN or EN to FR)

After the creation is completed, a message will be displayed telling you the translation has been created with a link to the new page. Now you have to edit the target page and update the content according to the page language:

Translation created

Important: when you create a new translation, all metadata are copied from the original page to the new one. Because of this, we recommend you to do the translation after you filled all the properties for the original page.

The next time you’ll go back to the original page, you will see its associated translations in the component:

Existing translations

Note that you can create only one translation for a target language (for the nominal case).

The language switcher control

When a translation is available for a page, a language switcher control at the top of the screen gives you the ability to view it by clicking on the target language:

Language switcher

When there is no translation for the current page, a warning message is displayed in the component:

No translation

When you translate a page, all labels like navigation menus and taxonomy values are translated automatically. Be careful, the page display language is different from the MUI feature of SharePoint (i.e the user interface language). It means that you can view a page in french even if the language of your SharePoint site is english, this is two different things.

French translation

Manage the intranet site map and navigation menus

There are several navigation menus in the intranet:

  • The « main menu » (1)
  • The « contextual menu » (2)
  • The « breadcrumb » (3)
  • The « header links » (4)

Navigation menus

The main, contextual and breadcrumb menu datasources are managed through a shared site map term set  in the taxonomy (« Site Map EN/FR« ). The header links menu has its own term set « Header Links EN/FR » and footer links are static. To access to the taxonomy configuration, go to the Site SettingsSite AdministrationTerm store management link

Taxonomy navigation

Important notes:

  • Because of the solution is multilingual, there are two term sets for « Site Map » and « Header Links », one for each language. Main term sets are for the « English » language. Term sets for other languages are automatically synchronized with it (pin terms with children) so when you have to add, update or remove a navigation link, we recommend you to do it directly in the « English » term set to keep a mirror structure in both languages.
  • You can create terms directly in term sets for other languages (i.e « Site Map FR ») but it is not recommended. The only operation you might have to do in a common situation is to configure URL of terms for alternative languages with a mirror structure between languages.

Create, update or delete navigation nodes

To create a new entry in the site map, just select the parent level where you want to add the node and hover your cursor on the right arrow of the label. Create your navigation node by clicking « Create Term » and by fill the title. Note that this is this label that will appear in navigation menus and it can be different from the title of the page linked to it.

Add nodes

Because physical pages of the intranet (pages created in the « Pages » library) and site map nodes are independent to give you more flexibly on your information architecture, you have to link them manually to the pages physical URL. In other words, you have to do some plumbing to build your menus and links.

To link a page URL to a navigation node in your site map, just click on the node you want to update (1) and then click on the « Navigation » tab (2):

Set navigation link

In the « Navigation Node Type » section, click on the « Simple Link or Header » (3). In this field you can:

  • Leave the blank value: in this case, if the node is included in a navigation menu, it won’t be « clickable » by users.
  • Fill an external link: for instance, google.ca is an external link, redirecting outside of your intranet.
  • Browse a page of your intranet: click on the « Browse » button on the right of the field an get the page you want to link. Click on the « Pages » link, then select the physical page and make sure the URL is correctly selected.

Once you’ve finished, click on the « Save » button at the bottom on the page.

Note: 

  • This solution also works with term driven pages and friendly URLs.

Control the visibility of a node in navigation menus

Within the site map, you have the ability to show or hide links in the navigation menus (main menu, contextual menu and breadcrumb). To do this, click on the node you want to update (1) and then click on the « Navigation » tab (2). On the « Visibility In Menus » section, select the appropriate setting (3):

Node visibility

  • « Show in Global Navigation Menu »: control the visibility only in the main menu.
  • « Show in Current Navigation Menu »: control the visibility on the contextual menu and the breadcrumb.
  • Security considerations

Note that if users don’t have access to the physical .aspx page (read permissions at least), the link won’t appear in menus even if these options are checked. By this way you can also control links displayed to users according to permissions. It follows the same behavior as the default SharePoint navigation menus.

Manage the navigation cache

Because of the solution relies on a client side technology (JavaScript) and is executed directly from the user browser, a cache mechanism is implemented in the solution to improve performances with navigation menus. Static pages are not updated often by definition so it can be useful to get these navigation nodes from a cache instead of making a call every time to SharePoint and for every page.

A configuration list is available at the top root site of the site collection to determine whether items are retrieved from the term set or from the cache (one configuration item by language). By default, the navigation nodes are always retrieved from the taxonomy term sets ensuring the latest version but slowing performances significantly depending your setup (bandwidth, browser, etc.).

To enable the cache mechanism and speed up the page loading, open the configuration list (Site ContentsConfiguration):

Configuration list

Edit items and uncheck the option « Force Cache Refresh« :

Edit configuration items

Note that this setting is global for all intranet users. Use this option if you think that your navigation structure won’t evolve in the next few weeks or months (new navigation nodes won’t appear if this option is unchecked). Note that you can revert these changes at any time.

Note:

  • For advanced users, you can set the term set ids used by menus (site map and header links) as data source for each language.

Intranet Tips & Tricks

The following section lists all intranet tips and useful details to know when working with the PnP Office 365 starter intranet solution:

  • You can change the site logo just by uploading your own logo in the SharePoint site settings.
  • You can replace the « xxx » label contained in the link « See all « xxx » news » on the front page just by modifying the title of the current site (the title is converted to lower case automatically).
  • If you have to add Search Web Parts (Search Results or Content Search Web Part) with dedicated intranet display templates, make sure the query loading behavior is set to « Async » instead of « Sync » (default option):

Async WebPart

Interested to know how it works behind the scenes? We will explain all of this in the next article. Stay tuned!

4 Comments

Add yours
  1. Markus

    Thank you for this great solution! I’m currently not sure which steps are needed to add a new language. Could you give me a short hint where I have to start?

    • Franck Cornu

      Hi Markus, to add a new langauge roughly you have to:

      – Create a JSON resource file for your new language.
      – In the provisioning template, update the « IntranetContentLanguage » choice field values by adding a choice (i.e « DE »).
      – Add your new language label (« DE ») in the parameters of the and components (see header.template.html and NewsPageLayout.aspx).
      – Create a new term test for each menus (i.e « Site Map DE » and « HEader Links DE »). Pin terms from the « EN » term set (don’t forget to translate all you terms).
      – Add a new item in the configuration list corresponding to your new language (term set ids and so on)

      I you have troubles, let me know!

+ Leave a Comment