2012-01-20 11 views
5

Qual è il modo migliore per determinare l'URL di un negozio Magento dall'interno di javascript?Recupera l'URL di base del negozio Magento in javascript

Sto lavorando a un'estensione riutilizzabile che deve conoscere l'URL di base del negozio in javascript per poter effettuare alcune chiamate Ajax. Si potrebbe pensare che una proprietà come

Mage.baseUrl 

sarebbe disponibile, ma non riesco a trovarlo.

Un'alternativa sarebbe quella di aggiungere l'url di base come un bit di javascript in linea, ma non riesco a trovare alcuna informazione su come aggiungere in linea javascript a livello di codice (solo file js esterni), senza alterare il modello.

risposta

5

Per impostazione predefinita questa informazione non è (affidabile, stabilmente) esposta tramite Javascript. Avrai bisogno di esporlo da solo tramite un blocco personalizzato aggiunto al layout. Il modo più semplice per farlo sarà

  1. Aggiungendo il blocco tramite local.xml file del tema

  2. Aggiunta di un modello per il tema per il blocco sopra

Per aggiungere il blocco il layout tramite il tuo file local.xml, qualcosa del genere dovrebbe essere sufficiente

<default> 
    <reference name="root"> 
     <block name="my_custom_js_block"> 
      <action method="setTemplate"> 
       <template>my_custom_js_block/extra-js.phtml</template> 
      </action> 
     </block> 
    </reference> 
</default> 

Quindi aggiungere il seguente cartella e file sul tema

app/design/frontend/default/your_theme/template/my_custom_js_block/ 
app/design/frontend/default/your_theme/template/my_custom_js_block/extra-js.phtml 

A questo punto si dispone di un file phtml modello che verrà resa su ogni pagina. Puoi aggiungere qualsiasi variabile javascript che desideri. Sono appassionato di un qualcosa di simile modello

#File: app/design/frontend/default/your_theme/template/my_custom_js_block/extra-js.phtml 
<?php 
    $h = Mage::helper('core'); 
    $info = new stdClass(); 
    $info->base_dir = Mage::getBaseDir(); 
?> 
<script type="text/javascript"> 
    var my_custom_js_block_info = <?php echo $h->jsonEncode($info); ?>; 
</script> 

(codice top-of-my-testa non testato, ma dovrebbe funzionare)

+0

Grazie per la risposta dettagliata. Come posso aggiungere questo blocco dal file config.xml del mio modulo, piuttosto che local.xml? Sto facendo un modulo riutilizzabile e non posso fare affidamento sull'utente che modifica local.xml. –

+0

Google in giro per aggiungere un file XML di layout personalizzato nel file config.xml del tuo modulo. Proprio come Mage_Catalog aggiunge catalog.xml, puoi avere il tuo modulo include un file XML personalizzato. –

+1

Dopo alcune ore di ricerche e tentativi con i molti metodi contraddittori e diversi per realizzare questo, ho fallito. C'è un modo per sapere se il mio file xml personalizzato viene persino incluso in fase di esecuzione? –

Problemi correlati