Free cookie consent management tool by TermsFeed

Page Link Component

On This Page

Creates a link to a page in a site or portal. Use in any component with a link parameter or in the Send Push Notification smart service. To link from external systems or emails, use a!urlForSite() and a!urlForPortal() instead. See When to use the page link component to learn when to use each link type.

Use a!pageLink() in the following components:

You can also use a!pageLink() in the Send Push Notification smart service.

Parameters

a!pageLink( label, page, urlParameters, showWhen, openLinkIn )

Name Keyword Types Description

Label

label

Text

Link text that users click to open the link.

Page

page

Site Page or Portal Page

A reference to a page in a site or portal, specified using the site! or portal! domain. For example, site!Site Name.pages.web-address-id. Required.

URL Parameters

urlParameters

Map

Passes values to rule inputs configured in the target page of the site or portal object. Use a!map() to provide a map of up to 10 URL parameter names and their associated values as key-value pairs. For example: a!map(state: "Virginia", priority: 4). See Use URL Parameters for Site and Portal Navigation for more information about using URL parameters.

Show When

showWhen

Boolean

Determines if the link displays. When false, hides the link and also skips evaluation. Default: true.

Open Link In

openLinkIn

Text

Determines how the link opens in browsers. Valid values: "SAME_TAB" (default), "NEW_TAB".

The following sections cover important details about the page link component.

The page link component behaves differently from the a!urlForSite() and a!urlForPortal() functions. When a user clicks a page link component to a page in the same site or portal, the navigation bar doesn't reload, only the content area and the url updates. Using a!urlForSite() or a!urlForPortal() opens the page in a new tab, reloading the entire page and the navigation bar.

gif showing the difference in loading behavior between urlforportal and page link

The following outlines when to use the page link component versus the other site and portal link types:

  • Use the page link component when you're linking to a site or portal page from within an interface.
  • Use a!urlForSite() or a!urlForPortal() in a!safeLink() when you can't use a component for the link, such as in email bodies or when passing a link to a third-party system via an integration or Web API. Additionally:
    • Use a!urlForPortal() whenever you need to specify a locale for the portal page.
    • Use a!urlForSite() when you need to link to from a portal to a site page.
  • Use a!portalUrlWithLocale() to create a link that switches between different locales while on a portal.

When a user clicks a page link that points to a page in the same site or portal, only the page content area updates. The navigation bar stays in place, the URL updates, and the target page appears selected in the navigation bar. The experience is the same as clicking a tab in the site or portal navigation bar.

When the link points to a page in a different site or portal, or if openLinkIn is set to "NEW_TAB" the full page reloads.

When the page parameter is null, clicking the link does nothing.

Linking to a site page from a portal

You can't use a page link component to link to a site page from within a portal. To link to a site from a portal, use the a!urlForSite() function and create a custom integration using integration and web API objects.

Referencing pages

The page parameter takes a reference to a site or portal page that is constructed using the site! or portal! domain.

See Reference Site and Portal Pages to learn how to construct page references.

Using the urlParameters parameter

For sites, URL parameters are only valid for pages that use an Interface for the page type.

See Use URL Parameters for Site and Portal Navigation for information about configuring URL parameters on site and portal pages.

Using a!map()

To create a list of the URL parameter names and values for the urlParameters parameter, use the a!map() function to create a list of the URL parameters as key-value pairs. Use the URL parameter name configured in the Rule Input Configurations grid as the key in the key-value pair.

Tip:  Click the site or portal page reference in the page parameter to view the URL parameter names. They are listed in the expression documentation pane under Enabled URL Parameter(s).

For example:

1
2
3
4
5
6
urlParameters: a!map(
  /*URL parameter name = county, URL parameter value = "Fairfax"*/
  county: "Fairfax",
  /*URL parameter name = active, URL parameter value = true*/
  active: true
)

This example is for illustrative purposes only. It won't work if you copy and paste it into an expression.

Generated URL structure

When a user clicks a page link, the browser URL updates to reflect the target page. The URL structure for site pages is:

https://[site or portal domain]/[web address ID]/page/[page web address ID]?[encrypted or plaintext URL parameters]

For example:

https://statedot.appiancloud.com/projectsite/page/project-dashboard?county=Fairfax&active=true

If the page is within a page group, the URL includes the page group:

https://statedot.appiancloud.com/projectsite/group/transportation/page/project-dashboard?county=Fairfax&active=true

By default, URL parameters are encrypted in the URL. If Encrypt URL parameters is turned off for the page, the URL parameters display in plaintext.

Examples

The following example demonstrates the page link component.

This example references a site from another environment and will error if you try to use it in yours. Use it as a reference only.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a!linkField(
  labelPosition: "COLLAPSED",
  links: {
    a!pageLink(
      label: "Active Projects in Fairfax County",
      /* Replace with a valid site page reference from your environment */
      page: site!DOT Project Site.pages.project-grid,
      urlParameters: a!map(
       county: "Fairfax", 
       active: true
       )
    )
  }
)

Your users may find it useful to bookmark filtered data or share their filtered data with other users. When you use URL parameters to set the value of filters, you can add a copy link button to your interfaces that will update with the value of the selected filters.

copy link button

Note:  Rule inputs can't pass data into user filters. To filter data using URL parameters and rule inputs, create the filters manually.

In order for this example to work, after creating the interface with rule inputs, add the interface as a site or portal page, then configure the Rule Input Configuration for the page.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
a!localVariables(
  local!county: a!queryRecordType(
    recordType: recordType!DOT County,
    fields: {recordType!DOT County.fields.value},
    pagingInfo: a!pagingInfo(startIndex: 1, batchSize: 30)
  ).data,
  local!selectedCounty: ri!county,
  local!isActive: ri!isActive,
  {
    a!richTextDisplayField(
      labelPosition: "COLLAPSED",
      value: {
        a!richTextItem(
          text: {
            a!richTextIcon(icon: "link"),
            " Copy link"
          },
          link: a!pageLink(
            page: site!DOT Projects.pages.projects,
            urlParameters: a!map(
              county: local!selectedCounty,
              isActive: local!isActive
            )
          ),
          linkStyle: "STANDALONE"
        )
      },
      tooltip: "Copy link with selected filters",
      align: "RIGHT"
    ),
    a!columnsLayout(
      columns: {
        a!columnLayout(
          contents: {
            a!dropdownField(
              choiceLabels: local!county[recordType!DOT County.fields.value],
              choiceValues: local!county[recordType!DOT County.fields.id],
              label: "COUNTY",
              placeholder: "Select a county",
              value: local!selectedCounty,
              saveInto: local!selectedCounty
            )
          }
        ),
        a!columnLayout(
          contents: {
            a!dropdownField(
              choiceLabels: { "Active", "Inactive" },
              choiceValues: { true, false },
              label: "Project Status",
              placeholder: "Select a status",
              value: local!isActive,
              saveInto: local!isActive
            )
          }
        )
      }
    ),
    a!gridField(
      labelPosition: "COLLAPSED",
      data: a!recordData(
        recordType: recordType!DOT Project,
        filters: a!queryLogicalExpression(
          operator: "AND",
          filters: {
            a!queryFilter(
              field: recordType!DOT Project.relationships.county.fields.id,
              operator: "=",
              value: local!selectedCounty
            ),
            a!queryFilter(
              field: recordType!DOT Project.fields.isActive,
              operator: "=",
              value: local!isActive
            )
          },
          ignoreFiltersWithEmptyValues: true
        )
      ),
      columns: {
        a!gridColumn(
          label: "Project Name",
          sortField: recordType!DOT Project.fields.projectName,
          value: fv!row[recordType!DOT Project.fields.projectName]
        ),
        a!gridColumn(
          label: "County",
          sortField: recordType!DOT Project.relationships.county.fields.value,
          value: fv!row[recordType!DOT Project.relationships.county.fields.value],
          align: "START"
        ),
        a!gridColumn(
          label: "Active?",
          sortField: recordType!DOT Project.fields.isActive,
          value: if(
            fv!row[recordType!DOT Project.fields.isActive],
            "Yes",
            "No"
          )
        )
      }
    )
  }
)

Feature compatibility

The table below lists this component's compatibility with various features in Appian.
Feature Compatibility Note
Portals Compatible
Offline Interfaces Incompatible
Sync-Time Custom Record Fields Incompatible
Real-Time Custom Record Fields Incompatible

Custom record fields that evaluate in real time must be configured using one or more Custom Field functions.

Process Reports Incompatible

Cannot be used to configure a process report.

Process Events Incompatible

Cannot be used to configure a process event node, such as a start event or timer event.

Process Autoscaling Incompatible

Cannot be used in autoscaled processes.

Event Consumer Filter Conditions Compatible

Can be used in filter conditions.

Event Consumer Event Handlers Compatible

Can be used in event handler expressions.

Feedback