déplacer le code de fichier externe .js du module vers le fichier modèle [phtml]

8

Nous avons un module personnalisé avec le code ci-dessous

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

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

Comme nous ne pouvons pas utiliser le code php dans ce fichier .JS , existe-t-il un moyen de déplacer le code présent du Abstract.jsfichier vers un .phtmlfichier?

Éditer

J'ai suivi la réponse de Raphaël et changé le code comme ici:

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

mais les résultats du fichier Abstract.Js ne s'affichent toujours pas dans js_styles1.phtml

fichier de mise en page : http://pastebin.com/BZGRaiDH

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

j'essaie onclick button = onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"mais cela ne fonctionne pas dans le fichier .JS, donc seulement j'essaie de copier le code .js en code .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>

lorsque j'ai vérifié les indications de chemin du modèle, il charge le fichier phtml, mais le résultat du code JS ne s'affiche pas en frontend. mais d'autres résultats de code html, php, js s'affichent .....

console

entrez la description de l'image ici

entrez la description de l'image ici

avons-nous besoin de charger une bibliothèque js externe si oui, comment trouver cela?

Modifier2

J'ai essayé le code ci-dessous dans le fichier js_styles1.phtml, mais cela ne fonctionne toujours pas

<script type="text/javascript" src="http://sbdev2.kidsdial.com:81/js/aitoc/aitcg/Aitcg/View/Abstract.js"></script>
Bébé à Magento
la source
je donnerai 50 points de prime si cela a fonctionné pour moi .....
Bébé à Magento
Quel code php vous souhaitez utiliser dans votre fichier js? Vous pouvez utiliser le code javascript pour faire la même chose que le code php.
Neha Raval
@NehaRaval je veux afficher un pop-up si un invité a cliqué sur le bouton et je ne veux pas afficher un pop-up enregistré en cliquant sur ce bouton.
Bébé à Magento

Réponses:

1

Assurez-vous qu'il <?php echo $this->getChildHtml() ?>est appelé sur votre head.phtml.

Si ce code ne se termine pas, vous devez ajouter ce code à head.phtml

Mise à jour

Vous rencontrez un problème en raison de

Dépendance Js d'un fichier js à un autre fichier js

Ici aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js , etc. dépend du code js de aitcg / js_styles.phtml

Comme vous avez mis ce Abstract.js à js_styles.phtml et cejs 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

Cela signifie que tous les fichiers js d'Aitoc ne sont pas récupérés, properly of js_styles.phtml car ce code js se trouve après tous les fichiers jits d'Aitoc.

Solution:

Supprimer tous les fichiers js du gestionnaire de mise en page Aitoc<catalog_product_view>

et appeler tous ces js fils à js_styles.phtml coder manuellement

<!--  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
la source
oui, le <?php echo $this->getChildHtml() ?>code est présent dans le fichier head.phtml .....
Baby in Magento
nous avons également ajouté ce code dans view.phtml:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Baby in Magento
Merci pour votre temps inestimable et votre soutien, son fonctionnement est absolument parfait ...... je vais vous attribuer une prime ......
Baby in Magento
2

Eh bien, vous pouvez utiliser un fichier phtml à la place en remplaçant:

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

Avec:

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

Ensuite, déplacez simplement votre JS dans ce fichier phtml et ajustez-le avec vos modifications PHP.

Raphael chez Digital Pianism
la source
Merci, c'est agréable de voir à nouveau votre réponse à ma question .... J'ai suivi votre réponse et remplacé action codepar block codecomme ici :,<block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" /> mais il n'affiche pas les résultats de .js file - upload image & add text buttons are missingcomme dans link1 , avant que ces liens s'affichent comme link2 , code: `js_styles1. phtml: pastebin.com/YhgmvCMx . où j'ai mal fait?
Bébé à Magento
voici le fichier layout.xml: pastebin.com/dbu9thPE , veuillez vérifier une fois .....
Bébé à Magento
Je peux voir les boutons "télécharger l'image" et "ajouter du texte" dans les deux liens, et différentes erreurs dans la console. Avez-vous déjà résolu?
nuovecode
1

si je comprends bien votre question, vous voulez copier votre code js en phtml

Alors, suivez les étapes ci-dessous

comme vous avez déjà créé un fichier PHTML et son rendu sur frontend

commentez / supprimez d'abord ce code XML pour le rendu JS.

Copiez le code JS dans un fichier PHTML dans le script TAG

par ex.

<script>
 your js file code here 
</script> 
Murtuza Zabuawala
la source
merci, oui j'ai copié le code javascript présent dans le fichier .js dans le fichier phtml ..... mais ça me donne des erreurs de console
Baby in Magento
Tout d'abord, copiez et collez le code js et vérifiez qu'il fonctionne, puis modifiez le code
Murtuza Zabuawala
quand je copie du code js en code phtml, je ne peux pas voir les résultats du code .js - "télécharger l'image et ajouter le bouton de texte" manquant après avoir copié le code
Baby in Magento
ajoutez votre fichier phtml en tête
Murtuza Zabuawala
vous obtenez cette erreur car votre fichier js est dans le corps
Murtuza Zabuawala
1

Supprimez le java réel que vous avez collé du fichier principal.

Collez-en un dans la tête de votre fichier phtml, selon l'emplacement de votre fichier js.

S'il se trouve dans le fichier js de base de Magento, utilisez ceci:

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

ou s'il se trouve dans le dossier js de votre skin, utilisez ceci:

<script src="<?php echo $this->getSkinUrl(); ?>js/aitoc/aitcg/Aitcg/View/Abstract.js" type="text/javascript"></script>
LNGLA
la source
J'ai essayé votre solution, mais elle montre toujours des erreurs de console comme indiqué dans la question .....
Baby in Magento
1

Pour ce faire, vous pouvez passer votre variable de code PHP à votre code JS à l'aide de la variable de configuration. Ajoutez la ligne ci-dessous à votre fichier app / design / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtml

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

après la ligne,

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

Vous pouvez maintenant utiliser cette variable isUserLoggedInpour vérifier si l'utilisateur est connecté ou non dans votre code JS.
Mettez à jour votre fonction JS initObservers, depuis

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

à

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

Maintenant, lorsqu'un utilisateur invité cliquera sur le bouton "Enregistrer la conception", la conception ne sera pas enregistrée et il ouvrira la fenêtre de connexion que vous avez utilisée dans votre code,

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