Как создать ссылку без PGID

#intershop

#intershop

Вопрос:

Как создать ссылку без PGID на уровне ISML?

Следующий код отлично подходит для того, чтобы избежать указания идентификатора сеанса в URL, но все равно добавляет PGID в конец URL.

 #sessionlessurl(Action(TargetPipeline))#
 

Ответ №1:

Я считаю, что вы не можете этого сделать, sessionlessurl и я также думаю, что нет функции ISML, которая может это сделать. Но есть пользовательский тег, который используется для создания канонических ссылок, и вы также можете им воспользоваться. Вызывается тег issetcanonicallink . Вот пример кода:

 <issetcanonicallink 
    scope="request"
    name="CanonicalLink"
    action="ViewStandardCatalog-Browse" 
    parameters="#ParameterList(Parameter('CatalogID', CategoryBO:CatalogBO:Name), Parameter('CategoryName', CategoryBO:Name))#">

<link rel="canonical" href="<isprint encoding="off" value="#CanonicalLink#">" />
 

Реализация SetCanonicalLinkTag находится в core картридже, и параметры соответствующим образом документированы.

Комментарии:

1. На самом деле забавно, так как я уже изменил этот тег в нашем проекте 😉 Спасибо за напоминание!

Ответ №2:

Мое текущее решение для создания URL-адреса без sid и pgid таково:

 <%
    String targetPipeline = getPipelineDictionary().get("targetPipeline");
    URLPipelineAction action = new URLPipelineAction(targetPipeline);
    action.setAppendPGID(false);



    // Default Link
    String myDefaultLink = TemplateURLComposition.getTemplateExecutionConfig().getURLComposer().createURL(false, null, null, null, action, null);
    getPipelineDictionary().put("myDefaultLink", myDefaultLink);

%>

<isprint value="#myDefaultLink#">
 

Не стесняйтесь добавлять лучшую, которая использует меньше JSP 🙂
Параметры URL отсутствуют, но вы также можете легко добавить их в часть JSP.