mova o código de arquivo .js externo do módulo para o arquivo de modelo [phtml]


8

Temos um módulo personalizado com o código abaixo

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

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

Como não podemos usar o código php nesse arquivo .JS , existe alguma maneira de mover o código presente de um Abstract.jsarquivo para outro .phtml?

Editar

Segui a resposta de Raphael e alterei o código como aqui:

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

mas ainda assim os resultados do arquivo Abstract.Js não são exibidos em js_styles1.phtml

arquivo de layout : http://pastebin.com/BZGRaiDH

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

Estou tentando botão onclick =, onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"mas isso não está funcionando no arquivo. JS, então só estou tentando copiar o código. js para o 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>

quando verifiquei as dicas do caminho do modelo, ele carregava o arquivo phtml, mas o resultado do código JS não está sendo exibido no frontend. mas outros resultados de código html, php, js estão sendo exibidos ...

console

insira a descrição da imagem aqui

insira a descrição da imagem aqui

é necessário carregar qualquer biblioteca js externa? Em caso afirmativo, como encontrar isso?

Edit2

Eu tentei o código abaixo no arquivo js_styles1.phtml, mas ainda não está funcionando

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

eu darei 50 pontos de recompensa se funcionou para mim .....
Baby in Magento

Qual código php você deseja usar no seu arquivo js? Você pode usar o código javascript para fazer a mesma coisa que o código php.
Neha Raval

@NehaRaval eu quero exibir pop-up se o hóspede clicou no botão e eu não quero exibir pop-up usuário registrado clicou nesse botão.
Bebê em Magento

Respostas:


1

Certifique-se de que <?php echo $this->getChildHtml() ?>é chamado no seu head.phtml.

Se esse código não existir, será necessário adicioná-lo em head.phtml

Atualizar

Você está tendo problemas por causa de

Dependência js de um arquivo js para outro arquivo js

Aqui aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js , etc, depende do código js de aitcg / js_styles.phtml

Como você colocou este Abstract.js em js_styles.phtml e estejs 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

Isso significa que todo arquivo js do aitoc não está recebendo, properly of js_styles.phtml pois esse código js está depois de todos os arquivos aitoc js.

Solução:

Remova todos os arquivos js do manipulador de layout do Aitoc<catalog_product_view>

e chame todos os js fils em 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 } ?>

sim, o <?php echo $this->getChildHtml() ?>código está presente no arquivo head.phtml .....
Baby in Magento

Também adicionamos este código em view.phtml:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Bebê em Magento

Obrigado pelo seu inestimável tempo e apoio, está funcionando absolutamente bem ...... eu concederei recompensa a você ......
Baby in Magento

2

Bem, você pode usar um arquivo phtml substituindo:

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

Com:

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

Em seguida, basta mover seu JS nesse arquivo phtml e ajustá-lo com suas modificações no PHP.


Obrigado, é bom ver sua resposta para minha pergunta novamente .... Eu segui sua resposta e substitui action codepor block codeaqui :, <block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />mas não está exibindo resultados .js file - upload image & add text buttons are missingcomo no link1 , antes que esses links fossem exibidos como link2 , código: `js_styles1. phtml: pastebin.com/YhgmvCMx . onde eu fiz errado?
Bebê em Magento

aqui está o arquivo layout.xml: pastebin.com/dbu9thPE , por favor, verifique uma vez .....
Baby in Magento

Posso ver os botões "carregar imagem" e "adicionar texto" nos dois links, além de erros diferentes no console. Você já resolveu?
Nuovecode 19/03/2017

1

Pelo que entendi sua pergunta, você deseja copiar seu código js em phtml

então, siga as etapas abaixo

como você já criou um arquivo PHTML e sua renderização no frontend

em primeiro lugar, comente / remova esse código XML para renderização JS.

Copie o código JS para o arquivo PHTML no script TAG

por ex.

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

graças, sim i copiado código javascript presente em .js arquivo para arquivo phtml ..... mas seu dando-me consolar erros
bebê em Magento

Primeiro apenas copiar e colar o código js e verifique se ele está funcionando e, em seguida, modificar o código
Murtuza Zabuawala

quando eu copiar o código js ao código phtml, eu não posso ver todos os resultados de js código - "upload da imagem e adicionar o botão texto" desaparecidos após i copiado código
Bebê em Magento

adicionar o arquivo phtml na cabeça
Murtuza Zabuawala

você receber esse erro bcause seu arquivo js é no corpo
Murtuza Zabuawala

1

Exclua o java real que você colou do arquivo principal.

Cole um deles no cabeçalho do seu arquivo phtml, dependendo da localização do seu arquivo js.

Se estiver localizado no arquivo js base do Magento, use este:

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

ou, se estiver na pasta js do seu skin, use o seguinte:

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

i tentou a sua solução, mas ainda mostrando erros de console como afixado em questão .....
Bebê em Magento

1

Para conseguir isso, você pode passar sua variável de código PHP para o seu código JS usando a variável de configuração. Adicione a linha abaixo ao seu arquivo app / design / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtml

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

depois da linha

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

Agora você pode usar essa variável isUserLoggedInpara verificar se o usuário está logado ou não no seu código JS.
Atualize sua função JS initObservers, de

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

para

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

Agora, quando um usuário convidado clicar no botão "Salvar design", o design não será salvo e abrirá o pop-up de login que você usou no seu código,

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.