Como faço para acessar as propriedades do documento principal para o uso em crianças

StackOverflow https://stackoverflow.com/questions/1683799

  •  18-09-2019
  •  | 
  •  

Pergunta

Eu sou novo para os Dois CMS.Por favor, ajuda.

Eu tenho um Umbraco site em que eu criei um DocumentType chamado de 'Mestre'.O 'Mestre' de página permite que a entrada do usuário um objetivo e um valor de captação de iniciar estão a realizar.O 'Mestre' página eu tiver uma Macro que faz automaticamente o cálculo para gerar um por cento que será usado em todo o site.A Macro chama o XSLT seguinte

 <xsl:for-each select="$currentPage/ancestor-or-self::*">
  <xsl:variable name="amount" select="* [@alias = 'FundraisingCurrentAmount']"/>
  <xsl:variable name="goal" select="* [@alias = 'FundraisingGoal']"/>
  <xsl:variable name="percentage" select="$amount div $goal * 100"/>
  <xsl:value-of select="$percentage"/>
 </xsl:for-each>

Isso funciona, mas, eu estou supondo, porque é uma 'for-each' é também de volta dois NaN resultados.Como posso reescrever este (a) de limpeza e (b) de forma que ele funciona melhor.

Eu entendo ASP.NET Webforms, então se você poderia comparar com o que ele iria ajudar.

Apreciar a ajuda.

Foi útil?

Solução

Em Umbraco você pode ter o que são chamados recursivos de valores.Este são, basicamente, valores de página que procurar o nó de hierarquia até filnds um valor.

Estes podem ser passados para macros bem.

Então, no seu caso, supondo que a macro é chamada de "charityTotaliser", pode utilizar a seguinte macro chamada:

<umbraco:macro alias="charityTotaliser" ammount="[$FundraisingCurrentAmount]" goal="[$FundraisingGoal]"runat="server"/>

O $ indica que o valor é recursiva.

O XSLT seria algo parecido com isto (não testado apenas um exemplo):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:Stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxml="urn:schemas-microsoft-com:xslt"
    xmlns:umbraco.library="urn:umbraco.library"
    xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath"
    exclude-result-prefixes="msxml umbraco.library Exslt.ExsltMath">

    <xsl:output method="xml" omit-xml-declaration="yes"/>

    <xsl:param name="currentPage"/>

    <!-- Macro parameters -->
    <xsl:variable name="FundraisingCurrentAmount" select="/macro/FundraisingCurrentAmount"/>
    <xsl:variable name="FundraisingGoal" select="/macro/FundraisingGoal"/>

    <xsl:template match="/">

        <xsl:value-of select="$FundraisingCurrentAmount div $FundraisingGoal * 100"/>

    </xsl:template>

</xsl:stylesheet>

Se requied você também pode especificar reversão de valores a serem passados (no caso, o recursiva valor não pode ser encontrado):

<umbraco:macro alias="charityTotaliser" ammount="[$FundraisingCurrentAmount], [#FallBackAmmount], 1234" goal="[$FundraisingGoal]"runat="server"/>

Para obter mais informações sobre parâmetros de macro você pode ler este documentação

Outras dicas

Estou familiarizado apenas com o XSLT; portanto, a partir desse ponto de vista, sugiro adicionar uma qualificação para sua instrução para seleção para Eaça. Eu não vi o XML, mas algo como:

<xsl:for-each select="$currentPage/ancestor-or-self::*[FundraisingGoal>0]">
.
.
.
</xsl:for-each>

Ele deve percorrer apenas aqueles que têm um valor de meta que pode ser dividido.

Não tenho certeza se é isso que você procura, mas espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top