2012-10-18 30 views
5

लोड करता है मैं वर्तमान में Acquia पर ड्रोपल साइटों के विकास शुरू कर रहा हूं। गिट का उपयोग करना और स्थानीय रूप से काम करना मेरे लिए एक नया वर्कफ़्लो है। जब स्थानीय स्तर पर निर्माण और Modernizr लोड/yepnope का उपयोग करने की कोशिश कर रहा है, मेरे script.js में मेरी जे एस फ़ाइल आम तौर पर इस तरह दिखता है ..मॉड्यूलर/yepnope.js में Drupal.settings.basePath का उपयोग

Modernizr.load([ 
    { 
    test: Modernizr.mq('only all'), 
    nope: '/sitename/docroot/sites/all/themes/theme/js/libs/polyfill.js' 
    }, 
    .... 

तो यह है कि मेरे मशीन पर स्थानीय रूप से काम करता है, लेकिन जब मैं अपने परिवर्तन हो और करने के लिए धक्का मेरा अधिग्रहण विकास सर्वर लोड स्क्रिप्ट के लिए फ़ाइल पथ गलत है, क्योंकि यह वही सेटअप नहीं है जो मुझे लगता है।

http://mysite.devcloud.acquia-sites.com/mysite/docroot/sites/all/themes/theme/js/libs/polyfill.js

यह URL में mysite/docroot बिना, नीचे की जरूरत है।

http://mysite.devcloud.acquia-sites.com/sites/all/themes/theme/js/libs/polyfill.js

तो है कि मुझे Drupal.settings.basePath लिए लाता है। अगर मैं इसे प्रिंट करता हूं तो यह मुझे मेरे स्थानीय सेटअप पर/mysite/docroot/देता है। अगर मैं इसे dev सर्वर पर करता हूं, तो यह कुछ अलग प्रिंट करेगा (शायद बस /)।

तो मुझे जा रहा है शौकिया मैं कुछ इस तरह कर सकता है .. ग्रहण (गरीब नमूना माफ, मैं जानता हूँ कि यह बेहतर किया जा सकता है)

var myroot = Drupal.settings.basePath 

Modernizr.load([ 
{ 
test: Modernizr.mq('only all'), 
nope: myroot + 'sites/all/themes/theme/js/libs/polyfill.js' 
}, 
.... 

और निश्चित रूप से यह काम नहीं करता। बस क्वेरी 1 को परिभाषित नहीं किया गया है।

तो मुझे यकीन है कि इस काम को करने के मेरे कई प्रयासों में त्रुटियां हैं .. इसलिए यदि कोई मुझे कुछ सुझाव दे सकता है, या तो वर्कफ़्लो संबंधित है या मेरे सेटअप/कोड को कैसे ठीक किया जाए, तो यह बहुत अच्छा होगा।

धन्यवाद

+0

क्या आप Drupal.settings.basePath लॉग आउट कर सकते हैं और हमें बताएं कि इसमें क्या शामिल है? –

+0

मेरी स्थानीय मशीन पर यह "/ sitename/docroot /" दिखाता है, जो सही है। धक्का देने के बाद देव सर्वर पर, यह अपेक्षित के रूप में "/" दिखाता है। मुझे बस इस पथ को ढेर में प्राप्त करने की आवश्यकता है: 'path/to/polyfill.js' – humanaut

+0

हाय, सहायता प्राप्त करने के लिए आपको अधिक कोड (या लाइव उदाहरण) दिखाना होगा। जो कोड आप अभी दिखाते हैं वह सही लगता है, इसलिए समस्या शायद कहीं और से आती है। क्या वैश्विक स्क्रिप्ट टैग से पहले वैश्विक 'ड्रूपल' घोषित किया गया है? –

उत्तर

1

हो सकता है कि मैं सिर्फ एक अलग स्थानीय सेटअप जब Acquia का उपयोग कर, लेकिन क्यों न सिर्फ /sites/all/themes/theme/js/libs/polyfill.js की तरह एक रिश्तेदार पथ का उपयोग करें?

1

यह थोड़ी देर हो चुकी है, लेकिन यह भी मदद मिल सकती है:

var jsFolderPath = window.location.protocol + "//" + window.location.host+ Drupal.settings.basePath + 'sites/all/themes/theme/js/libs/'; 

nope: jsFolderPath + 'polyfill.js' 

तो आप आसानी से polyfills प्रत्येक yesnope के लिए, चाहे डेव सर्वर में या locahost में होने का जोड़ें:

की तरह कुछ की कोशिश करो।