كيف يمكنني الوصول إلى خصائص من وثيقة الأصل لاستخدامها في الأطفال

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا جديد على Umbraco CMS. الرجاء المساعدة.

لدي موقع على شبكة الإنترنت التي قمت بإنشاء مستندات تسمى "ماجستير". تتيح صفحة "ماجستير" إدخال المستخدم هدفا ومقايدا لتربية الصندوق يبدأون به. في صفحة "ماجستير" لدي ماكرو يقوم تلقائيا بإنشاء الرياضيات في المئة التي سيتم استخدامها في جميع أنحاء الموقع. يستدعي الماكرو 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>

هذا يعمل ولكن، أنا أفترض لأنه "بالنسبة لكل"، فإنه يعود أيضا إلى نتائج نان. كيف يمكنني إعادة كتابة هذا (أ) منظف (ب) و (ب) بحيث يعمل بشكل أفضل.

أنا أفهم asp.net webforms لذلك إذا كنت تستطيع المقارنة مع ذلك ساعده.

نقدر المساعدة.

هل كانت مفيدة؟

المحلول

في UMBRACO، يمكنك الحصول على ما يسمى القيم العودية. هذه هي قيم الصفحة أساسا والتي تبحث عن العقدة Hierachy حتى يتم استخدام قيمة.

هذه يمكن أن تمر إلى وحدات الماكرو كذلك.

لذلك في حالتك على تحمل ماكرو الخاص بك يسمى "CharityTotaliser"، يمكنك استخدام مكالمة ماكرو التالية:

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

تشير $ إلى أن القيمة متكررة.

ستبدو XSLT شيئا مثل هذا (لم يتم اختباره فقط):

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

إذا طلب منك أيضا تحديد قيم الاحتياط المراد إقرارها (في حالة عدم وجود قيمة متكررة):

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

لمزيد من المعلومات حول معلمات الماكرو، يمكنك قراءة هذا توثيق

نصائح أخرى

أنا فقط مألوفة XSLT، لذلك من وجهة النظر هذه أقترح إضافة مؤهل لبيان محدد لكل منهما. أنا لم أر XML ولكن شيء مثل:

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

يجب أن تمشي فقط من خلال تلك التي لها مبلغ الهدف الذي يمكن تقسيمه.

لست متأكدا مما إذا كان هذا هو ما أنت عليه، لكنني آمل أن يساعد هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top