mover el código de archivo externo .js del módulo al archivo de plantilla [phtml]

8

Tenemos un módulo personalizado con el siguiente código

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

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

Como no podemos usar el código php en este archivo .JS , ¿hay alguna forma de mover el código presente de un Abstract.jsarchivo a otro .phtml?

Editar

Seguí la respuesta de Raphael y cambié el código como aquí:

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

pero aún así los resultados del archivo Abstract.Js no se muestran en js_styles1.phtml

archivo de diseño : http://pastebin.com/BZGRaiDH

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

Estoy tratando de hacer clic en el botón = onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"pero esto no funciona en el archivo .JS, así que solo estoy tratando de copiar el código .js al código .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>

cuando verifiqué las sugerencias de ruta de la plantilla, cargaba el archivo phtml, pero el resultado del código JS no se muestra en la interfaz. pero se muestran otros resultados de código html, php, js .....

consola

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿es necesario cargar alguna biblioteca js externa si es así cómo encontrar eso?

Edit2

Intenté debajo del código en el archivo js_styles1.phtml, pero aún no funciona

<script type="text/javascript" src="http://sbdev2.kidsdial.com:81/js/aitoc/aitcg/Aitcg/View/Abstract.js"></script>
Bebé en magento
fuente
Daré 50 puntos de recompensa si me funcionó .....
Bebé en Magento
¿Qué código php quieres usar en tu archivo js? Puede usar el código javascript para hacer lo mismo que el código php.
Neha Raval
@NehaRaval Quiero mostrar una ventana emergente si el invitado hizo clic en el botón y no quiero mostrar una ventana emergente que el usuario registrado hizo clic en ese botón.
Bebé en Magento

Respuestas:

1

Asegúrese de que <?php echo $this->getChildHtml() ?>se llama en su head.phtml.

Si este código no existe, debe agregar este código en head.phtml

Actualizar

Tiene problemas debido a

Dependencia de Js de un archivo js a otro archivo js

Aquí aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js , etc. depende del código js de aitcg / js_styles.phtml

Como ha puesto este Abstract.js en js_styles.phtml y estojs 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

Eso significa que todos los archivos js de aitoc no se obtienen properly of js_styles.phtml ya que este código js es después de todos los archivos aitoc js.

Solución:

Eliminar todos los archivos js del controlador de diseño Aitoc<catalog_product_view>

y llame a todos los js fils en js_styles.phtml codifique 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 } ?>
Amit Bera
fuente
sí, el <?php echo $this->getChildHtml() ?>código está presente en el archivo head.phtml .....
Baby in Magento
también agregamos este código en view.phtml:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Baby in Magento
Gracias por su tiempo y apoyo invaluables, está funcionando absolutamente bien ... te recompensaré ......
Bebé en Magento
2

Bueno, puedes usar un archivo phtml reemplazando:

<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" />

Luego, simplemente mueva su JS en ese archivo phtml y modifíquelo con sus modificaciones de PHP.

Raphael en Digital Pianism
fuente
Gracias, es bueno ver su respuesta a mi pregunta nuevamente ... Seguí su respuesta y la reemplacé action codepor block codeaquí: <block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />pero no muestra los resultados .js file - upload image & add text buttons are missingcomo en el enlace 1 , antes de que esos enlaces se mostraran como enlace2 , código: `js_styles1. phtml: pastebin.com/YhgmvCMx . donde hice mal?
Bebé en Magento
aquí está el archivo layout.xml: pastebin.com/dbu9thPE , verifique una vez .....
Bebé en Magento
Puedo ver los botones "cargar imagen" y "agregar texto" en ambos enlaces, y diferentes errores en la consola. ¿Ya lo resolviste?
nuovecode
1

como entiendo tu pregunta, quieres copiar tu código js en phtml

entonces, siga los pasos a continuación

ya que creó un archivo PHTML y su representación en la interfaz

Primero comente / elimine ese código XML para la representación JS.

Copie el código JS en el archivo PHTML dentro del script TAG

por ej.

<script>
 your js file code here 
</script> 
Murtuza Zabuawala
fuente
gracias, sí, copié el código javascript presente en el archivo .js en el archivo phtml ... pero me da errores de consola
Baby en Magento
Primero simplemente copie el código pegar js y verifique que esté funcionando y luego modifique el código
Murtuza Zabuawala
cuando copio el código js al código phtml, no puedo ver ningún resultado del código .js - "cargar imagen y agregar botón de texto" falta después de copiar el código
Bebé en Magento
agregue su archivo phtml en la cabeza
Murtuza Zabuawala
obtienes este error porque tu archivo js está en el cuerpo
Murtuza Zabuawala
1

Elimine el java real que pegó del archivo de cabecera.

Pegue uno de estos en la cabecera de su archivo phtml, dependiendo de dónde se encuentre su archivo js.

Si se encuentra en el archivo js base de Magento, use esto:

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

o si está en la carpeta js de tu skin usa esto:

<script src="<?php echo $this->getSkinUrl(); ?>js/aitoc/aitcg/Aitcg/View/Abstract.js" type="text/javascript"></script>
LNGLA
fuente
He intentado la solución, pero todavía mostrando errores de consola tal como fue anunciado en cuestión .....
Bebé en Magento
1

Para lograr esto, puede pasar su variable de código PHP a su código JS usando la variable de configuración. Agregue la siguiente línea a su archivo de aplicación / diseño / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtml

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

después de la línea

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

Ahora puede usar esta variable isUserLoggedInpara verificar si el usuario ha iniciado sesión o no en su código JS.
Actualice su función JS initObservers, desde

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)); 
} 
},

a

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)); 
} 
},

Ahora, cuando un usuario invitado haga clic en el botón "Guardar diseño", el diseño no se guardará y abrirá la ventana emergente de inicio de sesión que utilizó en su código,

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
Jaimin Sutariya
fuente