2013-02-13 14 views
8

Tôi đang cố gắng để có được Magento BaseUrl thông qua javascript trong tập tin head.phtml, và sau đó sử dụng nó trong tập tin jquery.hello-lightbox.min, nơi tôi cần baseUrl để có được một số hình ảnh.làm thế nào để có được Magento baseUrl thông qua Javascript và sau đó sử dụng nó trong jquery.hello-lightbox.min?

Đây là những gì tôi có trong tập tin head.phtml:

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

<script type="text/javascript"> 

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

function getBaseUrl(baseUrl) 

</script> 

Sau đó, trong /js/jquery.hello-lightbox.min tôi có:

(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', . . . . . . . . . . 

Nhưng điều này không làm việc. Trong thực tế, có vẻ như tôi thậm chí không thể chuyển biến php $ baseUrl thành var baseUrl trong head.phtml

Bạn có ý tưởng nào không?

Trả lời

1

Cố gắng đặt dấu ngoặc kép quanh var JS bạn đang thiết qua tiếng vang php:

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

+0

Mmm không, vẫn giữ nguyên – Guille

0

EDIT:

Javascript sẽ không vượt qua biến giữa các tập tin như thế. Bạn không cần sử dụng PHP trong trường hợp này, chỉ cần thực hiện việc này:

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

Không, nó không hoạt động. BaseUrl được tạo chính xác bởi $ baseUrl = $ this-> getBaseUrl(); Vấn đề là tôi không thể vượt qua nó để biến js – Guille

+0

Cảm ơn nhưng đó là giống như thêm: var domain = document.domain; và sau đó var urrl = 'http: //' + domain + '/ skin/frontend/default/helloresponsive/images/lightbox /'; Mà không brind baseUrl, nó chỉ mang URL gốc của máy chủ, và tôi cần baseUrl trong trường hợp này ... – Guille

+0

Tôi thấy, hãy xem những gì tôi có thể làm ... –

3

Có lỗi cú pháp trong mã chính của bạn. Tôi nghĩ rằng những gì bạn muốn là để xác định một hàm trả về URL cơ sở như vậy:

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

<script type="text/javascript"> 

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

</script> 

sau đó sử dụng nó trong JavaScript (thoát khỏi những thứ function getBaseUrl(baseurl) ... có)

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

Xin cảm ơn, nhưng những gì bạn đề nghị phá vỡ chức năng ligthbox. Nếu tôi rời khỏi chức năng: function getBaseUrl (baseurl) {} trong jquery.hello-lightbox.min sau đó chức năng ligthbox hoạt động nhưng không thể lấy URL cơ sở, nếu tôi đã kiểm tra bằng firebug URL trong dòng css hiển thị là: url ("http: // undefined/skin/frontend/default/... Tôi nghĩ chúng ta đang ở gần. – Guille

-3

Magento: Nhận cơ sở Url, Skin Url, truyền thông Url, Js Url, Cửa hàng Url và Url hiện tại:

  1. Nhận cơ sở Url :Mage::getBaseUrl();
  2. Nhận Skin Url :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);
    1. Không an toàn Skin Url :$this->getSkinUrl('images/imagename.jpg');
    2. an toàn Skin Url :$this->getSkinUrl('images/imagename.gif', array('_secure'=>true));
  3. Nhận Truyền thông Url :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
  4. Nhận Js Url :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
  5. Nhận hàng Url :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
  6. Nhận Url hiện :Mage::helper('core/url')->getCurrentUrl();

Nhận Url trong trang cms hoặc khối tĩnh:

  1. Nhận cơ sở Url :{{store url=""}}
  2. Nhận Skin Url :{{skin url='images/imagename.jpg'}}
  3. Nhận Truyền thông Url `: {{phương tiện truyền thông url = '/ imagename.jpg '}}
  4. Nhận hàng Url :{{store url='mypage.html'}}
2

Bạn có thể gọi url cơ sở thông qua các bước đơn giản trong suốt cửa hàng trong mỗi tập tin/php javascript.

Mở của chủ đề của bạn trang/html/head.phtml và thêm đoạn mã sau trong ĐẦU thẻ trong dòng cuối cùng:

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

Bây giờ bạn có thể sử dụng biến BASE_URL trong mỗi mã javascript trong của bạn tập tin chủ đề để có được url cơ sở magento trong javascript.

1

Nếu bạn không muốn sử dụng Javascript nội dòng, bạn luôn có thể thêm nó làm thuộc tính cho div hoặc một thứ gì đó dọc theo các dòng đó.

Ví dụ, tôi sẽ thường thêm một yếu tố html như thế này:

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

Và rồi trong Javascript của tôi (jQuery trong trường hợp này), tôi sẽ chỉ cần thêm một cái gì đó như:

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

Thật tiện lợi cho các cuộc gọi AJAX nơi bạn muốn thực hiện cuộc gọi trên url của cửa hàng chính xác.