2012-10-18 1 views
5

Ich beginne gerade mit der Entwicklung von Drupal-Sites auf Acquia. Mit git und lokal arbeiten ist ein neuer Workflow für mich. Wenn lokal Gebäude und versucht Modernizr Last/yepnope, meine JS in meinem script.js zu verwenden Datei sieht in der Regel wie folgt ..Verwenden von Drupal.settings.basePath in Modernisierer/yepnope.js lädt

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

So, die lokal auf meinem Rechner funktioniert, aber wenn ich meine Änderungen zu übernehmen und Push-to Mein acquia development server Der Dateipfad für die geladenen Skripte ist falsch, da es nicht das gleiche Setup ist, denke ich.

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

Es muss die folgenden, ohne die mysite/docroot in der URL sein.

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

Damit bringt mich zu Drupal.settings.basePath. Wenn ich das ausdrucke gibt es mir/mysite/docroot/in meinem lokalen Setup. Wenn ich es auf dem Dev-Server mache, würde es etwas anderes ausdrucken (wahrscheinlich nur /).

So mich der Amateur angenommen zu sein ich so etwas tun könnte .. (verzeihen die schlechte Probe, weiß ich es besser gemacht werden kann)

var myroot = Drupal.settings.basePath 

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

Und das natürlich nicht funktioniert. Just Returns Abfrage1 ist nicht definiert.

Also bin ich mir sicher, dass es Fehler in vielen meiner Versuche gibt, dies zu machen. Wenn also jemand mir etwas vorschlagen kann, entweder Workflow oder wie ich mein Setup/Code repariere, wäre das großartig.

Dank

+0

Können Sie Drupal.settings.basePath ausloggen und lassen Sie uns wissen, was es enthält? –

+0

Auf meinem lokalen Computer wird "/ sitename/docroot /" angezeigt, was korrekt ist. Auf dem Dev-Server wird nach dem Push-Vorgang wie erwartet "/" angezeigt. Ich muss diesen Pfad nur in den Nö-Pfad bringen: 'path/to/polyfill.js' – humanaut

+0

Hallo, du musst mehr Code (oder Live-Beispiel) zeigen, um Hilfe zu bekommen. Der gerade angezeigte Code scheint korrekt zu sein, so dass das Problem wahrscheinlich von woanders kommt. Ist das globale 'Drupal' vor Ihrem Script-Tag deklariert? –

Antwort

1

Vielleicht habe ich gerade eine andere lokale Setup wenn Acquia verwenden, aber warum nicht nur einen relativen Pfad wie /sites/all/themes/theme/js/libs/polyfill.js verwenden?

1

Es ist ein bisschen spät, aber es kann trotzdem helfen:

Versuchen Sie so etwas wie:

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

nope: jsFolderPath + 'polyfill.js' 

Dann fügen Sie einfach polyfills für jeden yesnope, unabhängig davon, in dev-Server oder in locahost zu sein.

Verwandte Themen