2013-02-13 14 views
8

私はmagento BaseUrlをhead.phtmlファイルのjavascriptで取得しようとしています。jquery.hello-lightbox.minファイルで使用しています。ここでは、画像を取得するためにbaseUrlが必要です。 Magento baseUrlをJavascriptで取得してjquery.hello-lightbox.minで使用する方法

<?php $baseUrl = $this->getBaseUrl() ; ?> 

<script type="text/javascript"> 

var baseUrl = <?php echo $baseUrl ; ?> 

function getBaseUrl(baseUrl) 

</script> 

はその後/js/jquery.hello-lightbox.minに私が持っている::

(function($){ 

function getBaseUrl(baseurl) 
{ 
var domain = baseurl 
} 

var urrl = 'http://'+domain+'/skin/frontend/default/customtheme/images/lightbox/'; 

    $.fn.lightBox=function(settings)settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading: urrl+'lightbox-ico-loading.gif',imageBtnPrev:urrl+'lightbox-btn-prev.gif', . . . . . . . . . . 

をしかし、これは動作しません

は、ここで私はhead.phtmlファイルに持っているものです。実際には、私もhead.phtmlのvar baseUrlにPHPの変数$ baseUrlを渡すことができないようだ。

あなたはアイデアがありますか?

答えて

1

はあなたがPHPのエコーを経由して設定しているJSのVARの前後に引用符を入れて試してみてください。

var baseUrl = '<?php echo $baseUrl ; ?>'

+0

まだまだ同じです – Guille

0

EDIT:

Javascriptがそのようなファイル間の変数を渡すことはありません。この場合、PHPを使用する必要はありません。

var urrl = 'http://'+window.location.host+'/skin/frontend/default/customtheme/images/lightbox/'; 
+0

いいえ、動作しません。 baseUrlは$ baseUrl = $ this-> getBaseUrl()によって正しく生成されます。問題は、私はjs変数に渡すことができないということです。 – Guille

+0

ありがとうございますが、これは追加と同じです:var domain = document.domain; var urrl = 'http://' + domain + '/ skin/frontend/default/helloresponsive/images/lightbox /';そして、これは、baseUrlを曇らせていない、それは単にホストのルートURLをもたらし、私はこの場合baseUrlが必要です... – Guille

+0

私は、私が何ができるかを見てみましょう... –

3

メインコードに構文エラーがあります。

<?php $baseUrl = $this->getBaseUrl() ; ?> 

<script type="text/javascript"> 

function getBaseUrl() { return '<?php echo $baseUrl; ?>'; } 

</script> 
その後、

JavaScriptでそれを使用します:(そこfunction getBaseUrl(baseurl) ...ものを取り除く)

var urrl = 'http://'+getBaseUrl()+'/skin/frontend/default/customtheme/images/lightbox/'; 
+0

こんにちは、ありがとう、あなたの提案はligthbox機能を壊します。 function jQuery.hello-lightbox.minの関数getBaseUrl(baseurl){} ligthboxの機能は動作しますが、ベースURLを取得できません。ファイアバグをチェックすると、CSSの行のURLが次のように表示されます。url( "http://未定義/スキン/フロントエンド/デフォルト/ ...私たちは近いと思います。 – Guille

-3

Magentoの:私は何をしたいことはとても状のベースURLを返す関数を定義することだと思うゲットベースURL、スキンのURL、メディアのURL、Jsのurlには、ストアのURLと現在のURL:

  1. ベースURL :Mage::getBaseUrl();
  2. は、スキンのURL 0をゲット
    1. 非セキュアスキンのURL :$this->getSkinUrl('images/imagename.jpg');
    2. セキュアスキンのURL :$this->getSkinUrl('images/imagename.gif', array('_secure'=>true));
  3. ゲットメディアのURL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
  4. ゲットのJsのURL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
  5. ゲットストアのURL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
  6. 取得し、現在のURL :Mage::helper('core/url')->getCurrentUrl();

CMSページや静的ブロック内のURLを取得します:{{メディアのurl = '/ imagenameの:

  1. ベースURL :{{store url=""}}
  2. は、スキンのURL :{{skin url='images/imagename.jpg'}}
  3. をゲットメディアURLを `取得します。JPG '}}
  4. あなたは、すべてのJavaScript/PHPファイル内ストアを通じてこれらの簡単な手順を経てベースURLを呼び出すことができますストアのURL :{{store url='mypage.html'}}
2

を取得します。

あなたのテーマのページ/ HTML/head.phtmlを開き、最後の行のHEADタグ内に次のコードを追加します。今、あなたはあなたのすべてのjavascriptのコードでBASE_URL変数を使用することができます

<script type="text/javascript"> 
    var BASE_URL = '<?php echo Mage::getBaseUrl(); ?>'; 
</script> 

テーマファイルはjavascriptのmagentoベースURLを取得する。

1

インラインJavascriptを使用したくない場合は、divやその行に沿った属性に属性として追加することができます。

例えば、私は頻繁にこのようなHTML要素追加します:

<div class="my-class" data-storeurl="<?php echo Mage::getBaseUrl(); ?>"> 
.... 
</div> 

をそして、私のJavascriptを(この場合はjQueryの)中で、私はちょうどのようなものを追加します:

var current_store = $('.store-redirect').attr('data-storeurl'); 

AJAXコールでは、正しいストアのURLでコールを実行したい場合に便利です。

関連する問題