स्मार्टी योगदान सारांश एक साइट पर काम करता है, लेकिन एक ही सर्वर पर दूसरा नहीं

Dec 24 2020

मैं इस पर घंटे जला दिया है और एक दीवार पर लग रहा है। अन्वेषण के नए रास्ते पर प्रकाश डालने के लिए कुछ ताजा आँखों की सराहना करेंगे।

मैं योगदानों की सूची बनाने के लिए "योगदान खोजें" का उपयोग कर रहा हूं। मैं तब "धन्यवाद पत्र" चुनता हूं और फिर मेरे द्वारा बनाए गए टेम्पलेट का चयन करता हूं।

टेम्पलेट में मैं कुछ स्मार्टी कोड का उपयोग कर रहा हूं जो मैंने पिछले साल ऑनलाइन पाया था जो योगदान को सारांशित करता है और एक स्वच्छ तालिका बनाता है:

{foreach from=$contributions item=contribution} {assign var="date" value=$contribution.receive_date|date_format:"%d %b %Y"}
    <tr>
        <td>{$date}</td> <td style="text-align:right;">${$contribution.total_amount|number_format:2:".":","}</td> <td>{$contribution.payment_instrument}{if $contribution.check_number neq""} - #{$contribution.check_number}{/if}</td>
        <td>{$contribution.campaign}</td> <td>{$contribution.contribution_source}</td>
    </tr>
{/foreach}
    <tr>
        <th>2020 TOTAL</th>
        <th style="text-align:right;">${$contribution_aggregate|number_format:2:".":","}</th>
        <th> </th>
        <th> </th>
        <th> </th>
    </tr>

यह एक साफ सुथरी टेबल बनाने वाली एक साइट पर बहुत अच्छा काम करता है:

हालांकि, उसी सर्वर पर किसी अन्य साइट पर, मुझे "इस वेबसाइट पर एक महत्वपूर्ण त्रुटि हुई है। कृपया निर्देशों के लिए अपनी साइट व्यवस्थापक ईमेल इनबॉक्स की जांच करें।"

अपाचे त्रुटि लॉग की जांच से मुझे कुछ गैर-विशिष्ट त्रुटि मिली:

[Wed Dec 23 13:51:44.466136 2020] [php7:error] [pid 31786] [client maskedIP:43002] PHP Fatal error:  Smarty error: [in string:&lt;table align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; class=&quot;table&quot; style=&quot;margin-top:15px;&quot;&gt;\r\n\t&lt;tbody&gt;\r\n\t\t&lt;tr&gt;\r\n\t\t\t&lt;th&gt;Date&lt;/th&gt;\r\n\t\t\t&lt;th style=&quot;text-align:right;&quot;&gt;Amount&lt;/th&gt;\r\n\t\t\t&lt;th&gt;Method&lt;/th&gt;\r\n\t\t\t&lt;th&gt;Campaign&lt;/th&gt;\r\n\t\t\t&lt;th&gt;Note&lt;/th&gt;\r\n\t\t&lt;/tr&gt;\r\n\t\t&lt;!--\r\n    {foreach from=$contributions item=contribution} {assign\r\n var=&quot;date&quot; value=$contribution.receive_date|date_format:&quot;%d %b\r\n    %Y&quot;}\r\n  --&gt;\r\n\t\t&lt;tr&gt;\r\n\t\t\t&lt;td&gt;{$date}&lt;/td&gt;\r\n\t\t\t&lt;td style=&quot;text-align:right;&quot;&gt;${$contribution.total_amount|number_format:2:&quot;.&quot;:&quot;,&quot;}&lt;/td&gt;\r\n\t\t\t&lt;td&gt;{$contribution.payment_instrument}{if $contribution.check_number neq&quot;&quot;} - #{$contribution.check_number}{/if}&lt;/td&gt;\r\n\t\t\t&lt;td&gt;{$contribution.campaign}&lt;/td&gt;\r\n\t\t\t&lt;td&gt;{$contribution.contri in /var/www/masked-url.org/wordpress/wp-content/plugins/civicrm/civicrm/packages/Smarty/Smarty.class.php on line 1100, referer: https://masked-url.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fcontribute%2Fsearch&_qf_PDFLetter_display=true&qfKey=bd001d277ba51fe3447c1acb3c2bed4dceb754c89022040c362d62bb4e04b4b3_9738

मैंने दोनों साइटों पर CKEditor में संस्थाओं को निष्क्रिय कर दिया है:

मैंने सुनिश्चित किया है कि स्मार्टी संदेश टेम्पलेट्स में सक्षम है और त्रुटि लॉग पुष्टि करता है कि क्योंकि त्रुटि स्पष्ट रूप से स्मार्ट से संबंधित है।

मैंने शाब्दिक रूप से एक साइट से दूसरे में कोड को काट-छाँट किया है और इसे किसी भी तरह से नहीं बदला है।

निम्नलिखित कोड को एक टेम्पलेट में डालकर मैं एक बहुत ही सरल परीक्षण सफलतापूर्वक करने में सक्षम हूं:

<p>{$smarty.now|date_format}</p> <p>{$smarty.version}</p>

मुझे दोनों साइटों पर उस सरल परीक्षण के लिए मान्य आउटपुट मिलता है:

मैंने अन्य स्मार्टी कोड लिखने की भी कोशिश की है, लेकिन काम करने के लिए उस मूल मामले के अलावा कुछ भी भाग्य नहीं मिला है। कम से कम मेरे सीमित स्मार्टी अनुभव के साथ कुछ करने के लिए। हालाँकि, मैंने जो पहला कोड साझा किया, वह एक साइट पर बहुत अच्छा काम करता है और दूसरे पर विफल रहता है।

साइट 1 (कार्य): WordPress 5.6, PHP 7.3.22, CiviCRM 5.30.0, स्मार्टी 2.6.31 (हालांकि यह बहुत पुराना लगता है इसलिए मुझे उम्मीद है कि यह लंबे समय तक CiviCRM संस्करण रहा है)

साइट 2 (काम नहीं करता है - ऊपर त्रुटि): वर्डप्रेस 5.6, पीएचपी 7.3.22, सिविसीआरएम 5.32.2, स्मार्टी 2.6.31

जबकि CiviCRM संस्करण अलग हैं, मुझे उम्मीद है कि यह एक प्रतिगमन नहीं है। यह विशेष रूप से असंभव लगता है क्योंकि स्मार्टी संस्करण नहीं बदला है।

उम्मीद है कि कोई व्यक्ति प्रकाश को बहा सकता है या उपयोगी लॉग देखने के लिए अन्य स्थानों की पेशकश कर सकता है जो एक सुराग प्रदान कर सकते हैं।

जवाब

2 kapn Dec 29 2020 at 01:20

लॉग में पूर्ण स्मार्टी त्रुटि को कैप्चर करने का तरीका बताने के लिए @demerit का धन्यवाद। मुझे पता चला कि मुझे अपाचे लॉग में पूरी त्रुटि नहीं मिल रही थी। CRM_Core_Error::debug_log_message($error_msg);मैं का उपयोग करके पूरी त्रुटि को पकड़ने में सक्षम था जिसमें निम्नलिखित उपयोगी लाइन शामिल थी:

 line 17]: [plugin] (secure mode) modifier 'number_format' is not allowed (Smarty_Compiler.class.php, line 1934)

उस त्रुटि के लिए वेब पर खोज करने से जनवरी 2016 की एक पोस्ट सामने आई जिसमें दिखाया गया है कि number_formatयह समर्थित नहीं है, लेकिन crmNumberFormatइसके बजाय एक का उपयोग करना चाहिए ।

इस प्रतिस्थापन को करने से समस्या हल हो गई। यह एक रहस्य बना हुआ है कि number_formatमेरे CiviCRM प्रतिष्ठानों में से किसी एक में काम क्यों होता है जब ऐसा लगता है कि यह कम से कम 2016 के बाद से एक मुद्दा है। हालांकि, यह एक और दिन के लिए एक समस्या है। अभी के लिए मुझे इस स्थापना पर समस्या हल करने में खुशी हो रही है।

सही तालिका निम्नानुसार है:

<table align="left" border="1" cellpadding="5" cellspacing="0" class="table" style="margin-top:15px;">
<tbody>
    <tr>
        <th>Date</th>
        <th style="text-align:right;">Amount</th>
        <th>Method</th>
        <th>Campaign</th>
        <th>Note</th>
    </tr>
    <!--
{foreach from=$contributions item=contribution} {assign
var="date" value=$contribution.receive_date|date_format:"%d %b %Y"} --> <tr> <td>{$date}</td>
        <td style="text-align:right;">${$contribution.total_amount|crmNumberFormat:2:".":","}</td>
        <td>{$contribution.payment_instrument}{if $contribution.check_number neq""} - #{$contribution.check_number}{/if}</td> <td>{$contribution.campaign}</td>
        <td>{$contribution.contribution_source}</td> </tr> <!-- {/foreach} --> <tr> <th>2019 TOTAL</th> <th style="text-align:right;">${$contribution_aggregate|crmNumberFormat:2:".":","}</th>
        <th>&nbsp;</th>
        <th>&nbsp;</th>
        <th>&nbsp;</th>
    </tr>
</tbody>
1 Marko Dec 28 2020 at 06:39

मैं हाल ही में एक ही समस्या की तरह लग रहा है पर बहुत समय जला दिया है। मेरे लिए यह ब्राउज़र कैश में मौजूद CK एडिटर था, जो अपडेटेड कॉन्फ़िगरेशन (जो आपके स्क्रीनशॉट में सही लगता है) को पिक करने से इंकार कर रहा था।

अलग ब्राउज़र (या साफ़ ब्राउज़र कैश) आज़माएँ और सही टेम्पलेट फिर से सेव करें। फिर इसका परीक्षण करें। यह काम करना चाहिए।