Question: I am new to communities in lightning and I am trying to figure out a way to directly fetch the URL parameters into the lightning component attributes using the 
{! urlParamName} expressions.

for example : 

```
https://www.someurl.com/page?name=somename&surname=somesurname

```

My lightning component will be : 

```
<aura:component>

    <!-- Parameters Available in URL-->
    <aura:attribute name="name" type="String">
    <aura:attribute name="surname" type="String">

    <!--It will get name parameter from URL directly-->
    Name is : {!v.name} 

    <!--It will get surname parameter from URL directly-->
    SurName is : {!v.surname}

</aura:component>

```

I am trying to figure out a way which cannot includes JS.
Currently I am using Lightning JS to get these parameters.

Answer: 
After [Summer 18 release](https://releasenotes.docs.salesforce.com/en-us/summer18/release-notes/rn_lc_components_navigation.htm) (API version 43 and up) we can do this.

Implement `lightning:isUrlAddressable` interface and use `pageReference` attribute.

Example. - Component
Assume url is *<https://<instance>.lightning.force.com/lightning/cmp/<namespace>__componentName?testAttribute=abc>*

```
<aura:component implements="lightning:isUrlAddressable">
   <aura:handler name="init" value="{!this}" action="{!c.doInit}" description="Handler for valueInit event fired when the component has been initialised"/>
        {!v.pageReference.state.testAttribute}
</aura:component>

```

Component Controller

```
({
    doInit : function(component, event, helper) {
        console.log(component.get("v.pageReference").state.testAttribute);
    }
})

```

Console output will look like: "abc"
Based on Damon Shaw's code, just add this helper method:

```
getUrlParameter : function(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
}

```