sposta il codice del file .js esterno del modulo nel file template [phtml]


8

Abbiamo un modulo personalizzato con il codice seguente

app/design/frontend/rwd/Theme1/layout/aitcg.xml

<action method="addJs"><script>aitoc/aitcg/Aitcg/View/Abstract.js</script></action>

Dato che non possiamo usare il codice php in questo file .JS , esiste un modo per spostare il codice presente da un Abstract.jsfile ad un altro .phtml?

modificare

Ho seguito la risposta di Raffaello e ho cambiato il codice come qui:

<block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" /> 

ma i risultati del file Abstract.Js non vengono visualizzati in js_styles1.phtml

file di layout : http://pastebin.com/BZGRaiDH

js_styles1.phtml : http://pastebin.com/m85q9eMh

sto provando il pulsante onclick = onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"ma questo non funziona nel file .JS, quindi sto solo cercando di copiare il codice .js nel codice .php.

<script>

_getControlPanelHtml: function()
    {
        if (this.config.editorEnabled) {
            return '<div id="aitcg-control-panel">' +
                '<button  id="submit-editorApply-{{rand}}" onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();">SAVE DESIGN</button>' +
                '<button  id="submit-editorReset-{{rand}}" >{{reset_text}}</button>' +
                '</div>';
        }
        return '';
    },

    </script>

quando ho controllato i suggerimenti sul percorso del modello, sta caricando il file phtml, ma il risultato del codice JS non viene visualizzato in frontend. ma altri risultati del codice html, php, js vengono visualizzati .....

consolle

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

dobbiamo caricare una libreria js esterna se sì, come trovarla?

Edit2

Ho provato sotto il codice nel file js_styles1.phtml, ma non funziona ancora

<script type="text/javascript" src="http://sbdev2.kidsdial.com:81/js/aitoc/aitcg/Aitcg/View/Abstract.js"></script>

darò 50 punti taglia se funzionasse per me .....
Baby in Magento,

Quale codice php vuoi usare nel tuo file js? Puoi usare il codice javascript per fare la stessa cosa del codice php.
Neha Raval,

@NehaRaval voglio visualizzare il pop-up se l'ospite ha fatto clic sul pulsante e non voglio visualizzare il pop-up registrato dell'utente che ha fatto clic su quel pulsante.
Baby in Magento,

Risposte:


1

Assicurati che <?php echo $this->getChildHtml() ?>sia chiamato sul tuo head.phtml.

Se questo codice non viene chiuso, è necessario aggiungere questo codice su head.phtml

Aggiornare

Si è verificato un problema a causa di

Dipendenza da js da un file js a un altro file js

Qui aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js , ecc dipende dal codice js di aitcg / js_styles.phtml

Come hai messo questo Abstract.js su js_styles.phtml e questojs file properly have calling after

    aitoc/aitcg/Aitcg/View/Popup.js
    aitoc/aitcg/Aitcg/View/Gallery.js
    aitoc/aitcg/Aitcg/View/Gallery_Rwd.js
    aitoc/aitcg/Aitcg/Editor/Canvas/Abstract.js
    aitoc/aitcg/Aitcg/Editor/Canvas.js
    aitoc/aitcg/Aitcg/Editor/Canvas/Mirror.js
    .....
   ...
    aitoc/aitcg/raphael.js
    aitoc/aitcg/jscolor/jscolor.js
    aitoc/aitcg/rgbcolor.js
    aitoc/aitcg/canvg.js

Ciò significa che tutti i file js di aitoc non ottengono properly of js_styles.phtml poiché questo codice js è dopo tutti i file js di aitoc.

Soluzione:

Rimuovere tutti i file js del gestore di layout Aitoc<catalog_product_view>

e chiama tutti quei js fils su js_styles.phtml codificando manualmente

<!--  code of aitoc/aitcg/Aitcg/View/Abstract.js -->

....
<!--  end of aitoc/aitcg/Aitcg/View/Abstract.js -->


<?php
/* check current page is product */
if(Mage::app()->getFrontController()->getAction()->getFullActionName() =='catalog_product_view'){  ?>

<script type="text/javascript" src="<?php echo $this->getJsUrl('aitoc/aitcg/Aitcg/View/Popup.js')?>"></script>
<script type="text/javascript" src="<?php echo $this->getJsUrl('aitoc/aitcg/Aitcg/View/Gallery.js')?>"></script>
....
<script type="text/javascript" src="<?php echo $this->getJsUrl('aitoc/aitcg/Aitcg/AreaEditor.js')?>"></script>
<script type="text/javascript" src="<?php echo $this->getJsUrl('aitoc/aitcg/raphael.js')?>"></script>
...
<script type="text/javascript" src="<?php echo $this->getJsUrl('aitoc/aitcg/canvg.js')?>"></script>
<?php } ?>

sì, il <?php echo $this->getChildHtml() ?>codice è presente nel file head.phtml .....
Baby in Magento,

inoltre abbiamo aggiunto questo codice in view.phtml:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Baby in Magento

Grazie per il tuo inestimabile tempo e supporto, il suo funzionamento è assolutamente perfetto ...... Ti assegnerò la generosità ......
Baby in Magento

2

Bene puoi invece usare un file phtml sostituendo:

<action method="addJs"><script>aitoc/aitcg/Aitcg/View/Abstract.js</script></action>

Con:

<block type="core/template" name="custom.js" template="my/custom/template.phtml" />

Quindi sposta il tuo JS in quel file phtml e modificalo con le tue modifiche PHP.


Grazie, è bello vedere di nuovo la tua risposta alla mia domanda .... Ho seguito la tua risposta e sostituita action codeda block codecome qui :,<block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" /> ma non mostra i risultati .js file - upload image & add text buttons are missingcome in link1 , prima che quei link fossero visualizzati come link2 , codice: `js_styles1. phtml: pastebin.com/YhgmvCMx . dove ho sbagliato?
Baby in Magento,

ecco il file layout.xml: pastebin.com/dbu9thPE , si prega di controllare una volta .....
Baby in Magento

Vedo i pulsanti "carica immagine" e "aggiungi testo" in entrambi i collegamenti e diversi errori nella console. Hai già risolto?
nuovecode

1

come capisco la tua domanda, vuoi copiare il tuo codice js in phtml

quindi, segui i passaggi seguenti

come hai già creato un file PHTML e il suo rendering sul frontend

in primo luogo commentare / rimuovere quel codice XML per il rendering JS.

Copia il codice JS nel file PHTML all'interno dello script TAG

per es.

<script>
 your js file code here 
</script> 

grazie, sì, ho copiato il codice javascript presente nel file .js nel file phtml ..... ma mi sta dando errori di console
Baby in Magento

Prima basta copiare il codice js incolla e verificare che funzioni e quindi modificare il codice
Murtuza Zabuawala

quando copio il codice js nel codice phtml, non riesco a vedere alcun risultato del codice .js - "carica immagine e aggiungi pulsante di testo" mancante dopo aver copiato il codice
Baby in Magento

aggiungi il tuo file phtml in testa
Murtuza Zabuawala

ricevi questo errore perché il tuo file js è nel corpo
Murtuza Zabuawala

1

Elimina l'attuale java che hai incollato dal file head.

Incolla uno di questi nella testa del tuo file phtml, a seconda di dove si trova il tuo file js.

Se si trova nel file js di base di Magento usa questo:

<script src="<?php echo  Mage::getBaseUrl(); ?>aitoc/aitcg/Aitcg/View/Abstract.js" type="text/javascript"></script>

o se è nella cartella js della tua skin usa questo:

<script src="<?php echo $this->getSkinUrl(); ?>js/aitoc/aitcg/Aitcg/View/Abstract.js" type="text/javascript"></script>

ho provato la tua soluzione, ma mostra comunque errori di console come pubblicato nella domanda .....
Baby in Magento

1

Per ottenere ciò, puoi passare la tua variabile di codice PHP al tuo codice JS usando la variabile di configurazione. Aggiungi sotto la riga al tuo file app / design / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtml

isUserLoggedIn : '<?php echo (Mage::getSingleton('customer/session')->isLoggedIn())? "true": "false"; ?>',

dopo la linea,

jsUrl: '<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);?>',  
editorEnabled: true,

Ora puoi usare questa variabile isUserLoggedInper verificare se l'utente ha effettuato l'accesso o meno nel tuo codice JS.
Aggiorna la tua funzione JS initObserversda

initObservers: function() 
{ 
if (this.config.editorEnabled) { 
$('submit-editorApply-' + this.config.rand).observe('click', this.submitApply.bindAsEventListener(this)); 
$('submit-editorReset-' + this.config.rand).observe('click', this.submitReset.bindAsEventListener(this)); 
} 
},

per

initObservers: function() 
{ 
if (this.config.editorEnabled && this.config.isUserLoggedIn == 'true') { 
$('submit-editorApply-' + this.config.rand).observe('click', this.submitApply.bindAsEventListener(this)); 
$('submit-editorReset-' + this.config.rand).observe('click', this.submitReset.bindAsEventListener(this)); 
} 
},

Ora, quando un utente ospite farà clic sul pulsante "Salva design", il design non verrà salvato e si aprirà il popup di accesso utilizzato nel codice,

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.