5

現在、Acquia で drupal サイトの開発を開始しています。git を使用してローカルで作業することは、私にとって新しいワークフローです。ローカルでビルドして Modernizr load / yepnope を利用しようとすると、script.js ファイル内の JS は通常、次のようになります。

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

これは私のマシンでローカルに機能しますが、変更をコミットして aquia 開発サーバーにプッシュすると、ロードされたスクリプトのファイル パスが正しくありません。

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/ が表示されます。開発サーバーで実行すると、別のものが出力されます(おそらく / だけ)。

だから私はアマチュアなので、このようなことができると思っていました..(貧弱なサンプルを許してください、もっとうまくできることはわかっています)

var myroot = Drupal.settings.basePath

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

そして、これはもちろん機能しません。query1 が定義されていないことを返すだけです。

したがって、これを機能させるための多くの試みには間違いがあると確信しています..ワークフローに関連するもの、またはセットアップ/コードを修正する方法など、誰かが私に何かを提案できれば、それは素晴らしいことです.

ありがとう

4

2 に答える 2

1

少し遅れていますが、とにかく役立つかもしれません:

次のようなものを試してください:

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

nope: jsFolderPath + 'polyfill.js'

次に、開発サーバーまたは locahost に関係なく、yesnope ごとにポリフィルを簡単に追加します。

于 2013-06-07T12:55:03.850 に答える
1

Acquia を使用するときにローカル設定が異なるだけかもしれませんが、/sites/all/themes/theme/js/libs/polyfill.js のような相対パスを使用しないのはなぜですか?

于 2013-02-26T05:35:59.297 に答える