2012-10-18 11 views
5

Obecnie rozpoczynam tworzenie witryn drupal na Acquia. Używanie git i praca lokalnie to dla mnie nowy przepływ pracy. Przy budowie lokalnie i próbuje wykorzystać modernizr obciążenia/yepnope moi JS w moich script.js złożyć zazwyczaj wygląda tak ..Korzystanie z Drupal.settings.basePath w pakiecie Modernizer/yepnope.js ładuje się

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

Tak, że działa lokalnie na moim komputerze, ale gdy oddaję moje zmiany i wcisnąć do mój serwer deweloperski acquia, ścieżka pliku załadowanych skryptów jest niepoprawna, ponieważ nie jest to ta sama konfiguracja, jak sądzę.

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

To musi być poniżej, bez mysite/docroot w adresie URL.

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

Tak, że doprowadza mnie do Drupal.settings.basePath. Jeśli wydrukuję to, otrzymam/mysite/docroot/na mojej lokalnej konfiguracji. Jeśli zrobię to na serwerze dev, wydrukowałbym coś innego (prawdopodobnie just /).

Więc ja będąc amatorem Zakłada mógłby zrobić coś takiego .. (wybacz słabą próbkę, wiem, można to zrobić lepiej)

var myroot = Drupal.settings.basePath 

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

I to oczywiście nie działa. Po prostu zwraca zapytanie1 nie jest zdefiniowane.

Jestem pewien, że w wielu próbach wykonania tej pracy są błędy. Jeśli więc ktoś może mi coś zasugerować, albo związany z przepływem pracy, albo jak naprawić mój setup/kod, byłoby świetnie.

Dzięki

+0

Czy możesz wylogować się z Drupal.settings.basePath i poinformować nas, co zawiera? –

+0

Na mojej lokalnej maszynie wyświetla się "/ sitename/docroot /", co jest poprawne. Na serwerze dev po naciśnięciu pokazuje "/" zgodnie z oczekiwaniami. Potrzebuję tylko dostać tę ścieżkę do nope: 'path/to/polyfill.js' – humanaut

+0

Witam, będziesz musiał pokazać więcej kodu (lub przykładu na żywo), aby uzyskać pomoc. Kod, który właśnie pokazałeś, wydaje się poprawny, więc problem prawdopodobnie pochodzi z innych źródeł. Czy globalny "Drupal" jest zadeklarowany przed tagiem skryptu? –

Odpowiedz

1

Może po prostu mieć inną konfigurację lokalnej przy użyciu Acquia, ale dlaczego nie wystarczy użyć ścieżki względnej jak /sites/all/themes/theme/js/libs/polyfill.js?

1

To trochę późno, ale może pomóc w każdym razie:

Spróbuj coś takiego:

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

nope: jsFolderPath + 'polyfill.js' 

Wtedy łatwo dodawać polyfills dla każdego yesnope, niezależnie od bycia w serwerze dev lub w locahost.