Динамическое связывание с несколькими веб-публикациями


6

У меня есть сценарий, в котором есть несколько веб-сайтов, основанных на Tridion, и есть ссылки на компоненты, которые я хочу разрешить в веб-публикациях.

Например: Существует корпоративный сайт: публикация ID 14, и ниша сайта: Публикация ID 13.

Корпоративный сайт имеет страницу «О нас» с «О нас» статье компоненты, и нишевый сайт имеет компонентную ссылку на статью «О нас».

Мой cd_link_conf.xml имеет следующее:

<Publication Id="13"> 
    <Host Domain="mynichesite.com" Port="80" Path="/"/> 
    </Publication> 
    <Publication Id="14"> 
    <Host Domain="mycorporatesite.com" Port="80" Path="/"/> 
    </Publication> 

Все опубликовано в том же брокер БД, так что таблица LINK_INFO содержит все. Однако при просмотре на нишевом сайте (паб 13) динамическая ссылка на статью «О нас» на странице «О нас» в пабе 14 не разрешена. Мне не хватает какой-либо конфигурации, или мне нужно иметь логику, чтобы получить URI «pub 13» TCM в компоненте About US, прежде чем пытаться разрешить ссылку?

---- UPDATE ----

Я сейчас рассматривает писать следующий алгоритм, чтобы получить мои ссылки работают. Так как мы используем DD4T, я планирую расширить метод IComponent.ResolveUrl() со следующим:

  1. получить компонент ссылку TCM URI
  2. попробовать решительность в текущем пабе. Если решительности, а затем вернуться, еще ...
  3. попробовать другой паб локализации в TcmUri к следующему пабу (необходимо сохранить/получить список пабов где-то)
  4. попробовать решительность в следующем пабе. Если разрешить, а затем вернуть еще ...
  5. повторите шаг 3 до тех пор, пока из пабов не сканируется или не найдена ссылка.

По-прежнему не идеален, но если вы сделали что-то подобное раньше, пожалуйста, поделитесь.

  0

Так что я просто попытался использовать URI TCM, и это сработало. В принципе, в пабе 14 измените префикс публикации tcm uri на pub 13, а затем вызовите ссылку. Он возвращает правильный URL-адрес страницы. Тем не менее, это потребует немного логики для проверки всех ссылок - не идеально. 10 май. 132013-05-10 14:43:28

5

Перекрестная публикация всегда работала - насколько я помню, до тех пор, пока все правильно настроено.

Я использовал это в логике селектора языка перед:

  • Получить текущий идентификатор страницы ("ТКМ: 13-123-64")
  • Получить целевой публикации Id ("14"), которые у меня как часть исходного XML моего селектора
  • Получить ссылку на страницу с ID «ткм: 13-123-64» в контексте публикации 14

Таким образом, вы, кажется, почти нет. Вам нужно создать объект Link, связанный с публикацией, где вы хотите найти элемент.

Имейте в виду, что этот код будет работать перекрестное публикации:

ComponentLink componentLink = new ComponentLink(14); // 14 is corporate 
Link link = componentLink.GetLink("tcm:13-123"); // 13 is niche 
link.Url; // returns http://mycorporatesite.com/path/to/page 

Это разрешило бы ссылку на «кубометр: 13-123», но в контексте публикации 14 (который используется для инициализации объекта ComponentLink) , поэтому вам не нужно беспокоиться о локализации URI.

  0

Спасибо Нуно. Моя «локализация» означала получение идентификатора в контексте публикации. Думаю, моя проблема в том, что страница в ссылке может существовать в любом пабе, поэтому у меня нет контекстной публикации, например, в языковом коммутаторе. 10 май. 132013-05-10 16:13:15

  0

Ответ удален! Я не знал, что вы могли бы это сделать :) 10 май. 132013-05-10 16:16:48