You have more or less exhausted the popup's capabilities.
The next step would be to return HTML:
<a href="https://website.com/link1.pdf">Plan 1</a>
You don't have to try that; it won't work, as HTML returned by an expression is encoded and thus won't be evaluated.
One possible soultion to this: Figure out a maximum of plans you will have to return. For each plan, create an expression for the name and an expression for the hyperlink:
// Which hyperlink will be returned? Start with 1, increase for each subsequent expression
var index = 1
// get hyperlinks of intersecting plan features
var plans = Intersects($feature, FeatureSetByName($datastore,"Plan Area", ["Hyperlink"], true))
// no intersecting plans or you already returned all hyperlinks in previous expressions
if(plans == null || Count(plans) < index) {
return ""
}
// return the specified hyperlink
var i = 1
for(var p in plans) {
if(i == index) {
return p.Hyperlink
}
i += 1
}
// Which name will be returned? Start with 1, increase for each subsequent expression
var index = 1
// get names of intersecting plan features
var plans = Intersects($feature, FeatureSetByName($datastore,"Plan Area", ["PlanName"], true))
// no intersecting plans or you already returned all names in previous expressions
if(plans == null || Count(plans) < index) {
return ""
}
// return the specified name
var i = 1
for(var p in plans) {
if(i == index) {
return p.PlanName
}
i += 1
}
Configure your popup, switch to HTML source and put in your links:
<a href="{expression/plan_link_1}" target="_blank">{expression/plan_name_1}</a><br/>
<a href="{expression/plan_link_2}" target="_blank">{expression/plan_name_2}</a><br/>
<a href="{expression/plan_link_3}" target="_blank">{expression/plan_name_3}</a><br/>
<!-- and so on -->
You could make it simpler by just doing the hyperlink expressions and returning them in the popup's attribute table, they should be formatted as links, I think. You won't have the plan names, though.
Have a great day!
Johannes