2013-02-13 12 views
8

sto cercando di ottenere Magento BaseUrl tramite javascript nel file head.phtml e quindi utilizzarlo nel file jquery.hello-lightbox.min, dove ho bisogno di baseUrl per ottenere alcune immagini.come ottenere Magento baseUrl tramite Javascript e quindi usarlo in jquery.hello-lightbox.min?

Ecco quello che ho nel file di head.phtml:

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

<script type="text/javascript"> 

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

function getBaseUrl(baseUrl) 

</script> 

Poi nel /js/jquery.hello-lightbox.min ho:

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

Ma questo non funziona. In effetti sembra che non riesca nemmeno a passare la variabile php $ baseUrl a var baseUrl in head.phtml

Hai qualche idea?

risposta

1

tenta di mettere le virgolette attorno alla var JS si sta impostando tramite l'eco php:

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

+0

Mmm no, sempre lo stesso – Guille

0

EDIT:

Javascript non passerà le variabili tra i file del genere. In questo caso non è necessario utilizzare PHP:

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

No, non funziona. BaseUrl è generato correttamente da $ baseUrl = $ this-> getBaseUrl(); Il problema è che non posso passarlo alla variabile js – Guille

+0

Grazie, ma è lo stesso che aggiungere: var domain = document.domain; e quindi var urrl = 'http: //' + dominio + '/ skin/frontend/default/helloresponsive/images/lightbox /'; Quale non brind la baseUrl, porta solo l'URL di root host e ho bisogno di baseUrl in questo caso ... – Guille

+0

Vedo, vediamo cosa posso fare ... –

3

Ci sono errori di sintassi nel codice principale. Credo che ciò che si vuole è quello di definire una funzione che restituisce l'URL di base in questo modo:

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

<script type="text/javascript"> 

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

</script> 

quindi utilizzarlo in JavaScript: (sbarazzarsi della roba function getBaseUrl(baseurl) ... lì)

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

Ciao grazie, ma quello che suggerisci interrompe la funzionalità di ligthbox. funzione getBaseUrl (baseurl) {} in jquery.hello-lightbox.min quindi la funzionalità di ligthbox funziona ma non è possibile ottenere l'URL di base, se ho controllato con firebug l'URL nella riga css viene mostrato come: url ("http: // indefinito/skin/frontend/default/... Penso che siamo vicini. Qualche altro indizio? – Guille

-3

Magento: Get Base URL, URL skin, media Url, Js Url, negozio URL e l'URL corrente:

  1. Get Base URL :Mage::getBaseUrl();
  2. Get URL skin :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);
    1. Unsecure URL pelle :$this->getSkinUrl('images/imagename.jpg');
    2. URL della pelle sicuro :$this->getSkinUrl('images/imagename.gif', array('_secure'=>true));
  3. Get Media URL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
  4. Get Js URL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
  5. Get Conservare URL :Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
  6. Get URL corrente :Mage::helper('core/url')->getCurrentUrl();

ottenere l'URL nelle pagine CMS o blocchi statici:

  1. Diventa Base URL :{{store url=""}}
  2. ottenere l'URL della pelle :{{skin url='images/imagename.jpg'}}
  3. Get Media Url `: {{media url = '/ nomeimmagine.jpg '}}
  4. Get Conservare URL :{{store url='mypage.html'}}
2

È possibile chiamare URL di base attraverso questi semplici passi in tutto il negozio in ogni file/php javascript.

Aprire del vostro tema page/html/head.phtml e aggiungere il seguente codice nel tag HEAD nell'ultima riga:

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

Ora è possibile utilizzare variabili BASE_URL in ogni codice javascript nella tua file di tema per ottenere magento base url in javascript.

1

Se non si desidera utilizzare Javascript in linea, è sempre possibile aggiungerlo come attributo a un div o qualcosa del genere.

Per esempio, io spesso aggiungo un elemento HTML come questo:

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

E poi nel mio Javascript (jQuery in questo caso), mi limiterò a aggiungere qualcosa come:

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

È comodo per le chiamate AJAX in cui si desidera eseguire la chiamata nell'URL del negozio corretto.

Problemi correlati