¿Cómo puedo acceder a las propiedades de los padres de documentos para uso en niños

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

  •  18-09-2019
  •  | 
  •  

Pregunta

Soy nuevo en Umbraco CMS.Por favor, ayudar.

Tengo un Umbraco página web en la que he creado un DocumentType llamado 'Maestro'.El 'Maestro' de la página permite la entrada del usuario una meta y cantidad para una recaudación de fondos de iniciar que están llevando a cabo.En el 'Maestro' de la página tengo una Macro que automáticamente hace la matemáticas para generar un porcentaje que se utilizará en todo el sitio.La Macro se llama a la siguiente XSLT

 <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>

Esto funciona, pero, supongo que porque es un "para-cada' es también regresan dos NaN resultados.¿Cómo puedo volver a escribir este (a) limpiador y (b), por lo que funciona mejor.

Entiendo ASP.NET Webforms por lo que si se podría comparar a la que se le ayude.

Agradezco la ayuda.

¿Fue útil?

Solución

En Umbraco usted puede tener lo que se llama recursivo valores.Esto son, básicamente, la página de valores que buscar el nodo de jerarquía hasta que filnds un valor.

Estos pueden pasar a macros así.

Así que, en su caso, asumiendo que la macro se llama "charityTotaliser" se puede utilizar la siguiente macro llamada:

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

El $ indica que el valor es recursiva.

El XSLT sería algo como esto (no probado sólo un ejemplo):

<?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>

Si requeridos también puede especificar el retroceso de los valores a ser transmitidos (en caso de que el recurrente no se encuentra):

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

Para obtener más información sobre los parámetros de la macro puede leer este documentación

Otros consejos

No soy más que familiarizado con XSLT, por lo que desde ese punto de vista yo sugiero agregar un título para su para-cada instrucción de selección. No he visto el XML, pero algo como:

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

Sólo debe caminar a través de los que tienen una cantidad meta que se puede dividir por.

No estoy seguro si esto es lo que está después, pero espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top