Umbraco: создайте список для отметки, который будет определять, какой контент добавить на страницу - PullRequest
0 голосов
/ 23 ноября 2011

Хорошо, поэтому я недавно начал изучать настройку сайтов в Umbraco, так как мой клиент хочет иметь его для своего сайта. Теперь на своем сайте они хотят иметь три типа «действий», которые они должны иметь возможность добавлять на любую из своих страниц. Эти действия на самом деле просто строка HTML. Однако они хотят добавить его на страницу не для того, чтобы скопировать / вставить строку кода (понятно ..,), а для того, чтобы иметь область для галочки.

Строки кода выглядят так:

<a class="action people" href="/link/"><span>Testimonials</span></a>

<a class="action rac" href="/link/"><span>Request a Call</span></a>

<a class="action contact" href="/link/"><span>Contact Us</span></a>

Короче говоря, пользователь должен иметь возможность отмечать, например, "Отзывы", сохранять и публиковать на странице, чтобы появилась первая строка кода.

Я попытался зайти в Developer> Типы данных> Создать и определить свои собственные, основываясь на списке флажков, но это, очевидно, неправильно, потому что нет места для определения «когда пользователь помечает это поле, сохранить» * «как HTML и вставьте его на страницу»

Изменить:

Ниже Марапет дал мне толчок в нужном мне направлении. Вместо того чтобы использовать скрипт Razor, как он предложил, поскольку я ничего не знаю о Razor, я решил завершить проблему с XSLT, поэтому для завершения ответа приведу код для этого. (Это относится к файлу xslt, на который ссылается макрос, предложенный Марапетом.)

<xsl:choose>
  <xsl:when test="$currentPage/actionTestimonials = '1'">CODE HERE</xsl:when>
  <xsl:otherwise></xsl:otherwise>
</xsl:choose>

<xsl:choose>
  <xsl:when test="$currentPage/actionContactUs = '1'">CODE HERE</xsl:when>
  <xsl:otherwise></xsl:otherwise>
</xsl:choose>

<xsl:choose>
  <xsl:when test="$currentPage/actionRequestACall = '1'">CODE HERE</xsl:when>
  <xsl:otherwise></xsl:otherwise>
</xsl:choose>

1 Ответ

1 голос
/ 23 ноября 2011

Если эти ссылки всегда будут отображаться в одном и том же месте (например, нижний колонтитул, боковая панель, ...):

  • Создание базового типа документа , который содержит все свойства, общие для всех страниц (это хорошая практика, также для таких данных, как мета-описание и т. Д.)
  • В базовом типе документа установите флажок для каждой ссылки
    • Перейдите к Настройки - Типы документов и выберите базовый тип документа
    • Перейти на вкладку Общие свойства
    • В раскрывающемся списке ниже Добавить новое свойство выберите True / false - это даст вам флажок.
  • Создайте все другие типы документов, которые представляют страницы, наследуемые от этого базового типа - по крайней мере те, которые должны показывать эти ссылки
  • Создать макрос со скриптом, который отображает эти ссылки в зависимости от значений в полях флажков
    • Перейдите в раздел Developer и добавьте сценарий в Файлы сценариев - убедитесь, что флажок Создать макрос установлен
    • В файле скрипта добавьте код, чтобы показать или скрыть ссылки. Вы можете использовать Razor для доступа к свойствам, которые вы создали в базовом типе документа, например: if (Model.MyProperty) { ... }
  • В вашем основном макете (главной странице), где должны появляться ссылки, вставьте макрос
    • Аналогично: <umbraco:Macro Alias="MyMacro" runat="server" /> - вы можете использовать кнопки UI в Umbraco для вставки кода.
...