2011-06-29 8 views
6

के साथ प्रतिपादन करने का कोई तरीका है क्या अभिव्यक्ति इंजन को ईई कोड के रूप में घुंघराले ब्रैकेट के भीतर आइटम प्रस्तुत नहीं करने का कोई तरीका है? google chart tools जावास्क्रिप्ट कोड का उपयोग करता है जिसमें घुंघराले {} ब्रैकेट होते हैं, और स्वाभाविक रूप से ईई सोचता है कि यह एक चर है और इसे प्रस्तुत करने का प्रयास करता है। इस के आसपास किसी भी तरह से?अभिव्यक्तिइंजिन जेएस कोड को {} ब्रैकेट्स

+0

आपको एक उदाहरण दे सकते हैं? –

उत्तर

19

ExpressionEngine के खाका कक्षा{} रूप template variables घुंघराले ब्रेसिज़, चर के तीन प्रकार की तलाश में पार्स करता है: एकल, जोड़ी, और सशर्त चर: सीएसएस में

// Single Variable 
{summary} 

// Pair Variable 
{category} ... {/category} 

// Conditional Variable 
{if segment_2 != ""} ... {/if} 

घुंघराले ब्रेसिज़ एक विशेष शर्त माना जाता है।

उदाहरण के लिए, निम्नलिखित सीएसएस टेम्पलेट में कहीं भी जगह के लिए स्वीकार्य है, और आकर्षक पार्स हो जाता है:

<style> 
    /* All On One Line = Okay */ 
    p { margin-bottom: 1em; } 

    /* Indented and On Separate Lines = Also Okay */ 
    p em { 
     font-style: italic; 
    } 

    /* EE Variables are Parsed and Replaced */ 
    p.{site_name} { 
     text-decoration: none; 
     } 

    /* EE Code is Allowed and Parsed Appropriately */ 
    {exp:channel:entries channel="channel_name" limit="1"} 
     li.{url_title} a { 
      color: #c00; 
     } 
    {/exp:channel:entries} 
</style> 

दुर्भाग्य से, जावास्क्रिप्ट को अलग ढंग से नियंत्रित किया जाता है और टैग में कुछ भी प्रसंस्करण से उन्नत सशर्त, पार्सर से बचाता है । उदाहरण के लिए, घुंघराले ब्रेसिज़ सभी के साथ निम्न JavaScript एक पंक्ति पर:

<script>var addthis_config = { 'ui_click': true };</script> 

एक टेम्पलेट चर के रूप में ExpressionEngine द्वारा पार्स किया जाएगा और के रूप में प्रदान:

<script>var addthis_config = ;</script> 

आप सब कुछ पर शुरू ध्यान देंगे उद्घाटन { और बंद होने के साथ समाप्त } घुंघराले ब्रेस पार्स हो गया और बदल दिया! समाधान के लिए, आप अलग पंक्ति में ब्रेसिज़ जगह है और इस समस्या से बचने कर सकते हैं: आप एक JavaScript फ़ंक्शन कि ExpressionEngine से मूल्यों की उम्मीद लिखा है, बस जो एक good coding convention है अलग-अलग पंक्तियों — पर अपने ब्रेसिज़ जगह

<script> 
    var addthis_config = { 
     'ui_click': true, 
     'data_track_clickback': true 
    }; 
</script> 

और optimal for readability है: $conf['protect_javascript'] = 'n';

+0

क्या एक बड़ी प्रतिक्रिया है। यह वास्तव में वह जानकारी थी जिसे मैं कुछ जावास्क्रिप्ट सामान और ईई के बारे में ढूंढ रहा था। –

8

एक्सप्रेस क्या करता है:

<script> 
    $(document).ready(function() { 
     ... 
      {exp:channel:entries channel="channel_name" limit="1"} 
       var business_name = '{business_website}'; 
       var business_website = '{business_website}'; 
      {/exp:channel:entries} 
     ... 
    }); 
</script> 

बेन ने सुझाव दिया के रूप में, आप एक Hidden Configuration Variable सेट करके ऐसा व्यवहार को बदल सकते आयनइंजिन का छुपा $config['protect_javascript'] वास्तव में क्या करता है? यह शायद उदाहरण के लिए सबसे अच्छा समझाया गया है — मुझे चित्रित करने की अनुमति दें।

$config['protect_javascript'] = 'y'; उन्नत सशर्त, साथ निम्नलिखित कोड नमूना को देखते हुए पूरी तरह से नजरअंदाज कर दिया जाएगा:

<script> 
    {if username == "admin"} 
     Welcome, {username}! 
    {if:elseif member_id == "2"} 
     Welcome, {screen_name}! 
    {if:else} 
     Welcome, Guest! 
    {/if} 
</script> 

निम्नलिखित में से कौन उत्पादन का उत्पादन होगा:

<script> 
    Welcome, admin! 

    Welcome, Administrator! 

    Welcome, Guest! 
</script> 

जबकि, जब $config['protect_javascript'] = 'n'; ऊपर से एक ही कोड का टुकड़ा उन्नत सशर्तों का मूल्यांकन का मूल्यांकन करने की अनुमति देगा और उत्पादन करेगा:

<script> 
    Welcome, admin! 
</script> 

आप देख सकते हैं, अंतर है या नहीं, उन्नत सशर्त, जावा स्क्रिप्ट कोड ब्लॉक में मूल्यांकन किया जाता है।

Simple conditionals और template tags हमेशा की तरह, <script> टैग में मूल्यांकन किया जाता $config['protect_javascript'] — की स्थापना की परवाह किए बिना सिर्फ अलग पंक्ति में अपने घुंघराले ब्रेसिज़ {} जगह सुनिश्चित करें!

<script> 
    // Simple Conditionals Are Unaffected and Always Work 
    {if segment_2 != ""} 
     {redirect="404"} 
    {/if} 
</script> 
-1

सीधे शब्दों में अलग पंक्ति में घुंघराले ब्रेसिज़ रखकर किसी कारण (मैं ई v2.1.1 उपयोग कर रहा हूँ) के लिए मेरे लिए काम नहीं किया। लेकिन ब्रेसिज़ के पहले और बाद में एक टिप्पणी लाइन रखी। जैसे मेरा Google Analytics कोड के लिए:

<script> 
(function(i,s,o,g,r,a,m) 
// 
{ 
// 
i['GoogleAnalyticsObject']=r;i[r]=i[r]||function() 
// 
{ 
// 
(i[r].q=i[r].q||[]).push(arguments) 
// 
} 
// 
,i[r].l=1*new Date();a=s.createElement(o), 
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
// 
} 
// 
)(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 
ga('create', 'UA-3636230-46', 'auto'); 
ga('send', 'pageview'); 
</script> 
+0

हालांकि यह काम कर सकता है, यह नहीं जानना ** क्यों ** यह काम करता है पूरी तरह से समस्या को हल नहीं कर रहा है। यह इस बिंदु पर एक टिप्पणी के रूप में बेहतर हो सकता है जब तक कि यह स्पष्ट न हो जाए कि यह कैसे और क्यों काम करता है। –

संबंधित मुद्दे