Verschieben Sie den externen .js-Dateicode des Moduls in die Vorlagendatei [phtml]


8

Wir haben ein benutzerdefiniertes Modul mit dem folgenden Code

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

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

Da wir nicht PHP - Code in dieser .JS Datei verwenden können , ist es eine Möglichkeit , wir Code vorhanden aus bewegen können Abstract.jsDatei zu einem gewissen .phtmlDatei?

Bearbeiten

Ich folgte Raphaels Antwort und änderte den Code wie folgt:

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

Die Ergebnisse der Abstract.J-Datei werden jedoch nicht in js_styles1.phtml angezeigt

Layoutdatei : http://pastebin.com/BZGRaiDH

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

Ich versuche onclick button = onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"aber dies funktioniert nicht in der .JS-Datei, also versuche nur ich, .js-Code in .php-Code zu kopieren.

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

Wenn ich die Hinweise zum Vorlagenpfad überprüft habe, wird die HTML-Datei geladen, aber das JS-Code-Ergebnis wird nicht im Frontend angezeigt. aber andere HTML-, PHP-, JS-Code-Ergebnisse werden angezeigt .....

Konsole

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Müssen wir eine externe js-Bibliothek laden, wenn ja, wie man das findet?

Edit2

Ich habe den folgenden Code in der Datei js_styles1.phtml ausprobiert, aber er funktioniert immer noch nicht

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

Ich werde 50 Kopfgeldpunkte geben, wenn es für mich funktioniert hat .....
— Baby in Magento

Welchen PHP-Code möchten Sie in Ihrer JS-Datei verwenden? Sie können Javascript-Code verwenden, um das Gleiche wie PHP-Code zu tun.
— Neha Raval

@NehaRaval Ich möchte Popup anzeigen, wenn der Gast auf die Schaltfläche geklickt hat und ich möchte kein Popup anzeigen. Registrierter Benutzer, der auf diese Schaltfläche geklickt hat.
— Baby in Magento

Antworten:


1

Stellen Sie sicher, dass <?php echo $this->getChildHtml() ?>auf Ihrem aufgerufen wird head.phtml.

Wenn dieser Code nicht beendet wird, müssen Sie diesen Code unter head.phtml hinzufügen

Aktualisieren

Sie haben Probleme wegen

Js Abhängigkeit von einer js-Datei zu einer anderen js-Datei

Hier hängt aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js usw. vom js-Code von aitcg / js_styles.phtml ab

Wie Sie diese Abstract.js unter js_styles.phtml und dies gesetzt habenjs 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

Das bedeutet, dass nicht alle js-Dateien von aitoc abgerufen werden, properly of js_styles.phtml da dieser js-Code immerhin aitoc js-Dateien ist.

Lösung:

Entfernen Sie alle js-Dateien des Aitoc- Layout- Handlers<catalog_product_view>

und rufen Sie diese alle js-Dateien unter js_styles.phtml manuell auf

<!--  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 } ?>

Ja, <?php echo $this->getChildHtml() ?>Code ist in der Datei head.phtml vorhanden .....
— Baby in Magento

Außerdem haben wir diesen Code in view.phtml hinzugefügt:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
— Baby in Magento

Vielen Dank für Ihre unbezahlbare Zeit und Unterstützung, es funktioniert absolut gut ...... Ich werde Ihnen Kopfgeld gewähren ......
— Baby in Magento

2

Nun, Sie können stattdessen eine HTML-Datei verwenden, indem Sie Folgendes ersetzen:

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

Mit:

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

Verschieben Sie dann einfach Ihr JS in diese HTML-Datei und optimieren Sie es mit Ihren PHP-Änderungen.


Danke, es ist schön Ihre Antwort auf meine Frage noch einmal zu sehen .... Ich folgte der Antwort & ersetzt action codedurch block codewie hier: <block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />, aber es ist nicht zum Anzeigen der Ergebnisse .js file - upload image & add text buttons are missingwie in link1 , bevor diese Verbindungen als wurden Anzeigen link2 , Code: `js_styles1. phtml: pastebin.com/YhgmvCMx . Wo habe ich falsch gemacht?
— Baby in Magento

Hier ist die Datei layout.xml: pastebin.com/dbu9thPE , bitte einmal überprüfen .....
— Baby in Magento

Ich kann in beiden Links die Schaltflächen "Bild hochladen" und "Text hinzufügen" sowie verschiedene Fehler in der Konsole sehen. Hast du schon gelöst?
— Nuovecode

1

Wenn ich Ihre Frage verstehe, möchten Sie Ihren JS-Code in HTML kopieren

Befolgen Sie daher die folgenden Schritte

Sie haben bereits eine PHTML-Datei erstellt und diese im Frontend gerendert

Kommentieren / entfernen Sie zuerst diesen XML-Code für das JS-Rendering.

Kopieren Sie den JS-Code in die PHTML-Datei innerhalb des Skript-TAG

zum Beispiel.

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

danke, ja, ich habe Javascript-Code in der .js-Datei in die HTML-Datei kopiert ..... aber es gibt mir Konsolenfehler
— Baby in Magento

Zuerst einfach kopieren, js Code einfügen und überprüfen, ob er funktioniert und dann den Code ändern
— Murtuza Zabuawala

Wenn ich JS-Code in HTML-Code kopiere, kann ich keine Ergebnisse von JS-Code sehen - "Bild hochladen und Text hinzufügen" fehlt, nachdem ich Code kopiert habe
— Baby in Magento

Fügen Sie Ihre HTML-Datei im Kopf hinzu
— Murtuza Zabuawala

Sie erhalten diesen Fehler, weil Ihre JS-Datei im Körper ist
— Murtuza Zabuawala

1

Löschen Sie das tatsächliche Java, das Sie aus der Kopfdatei eingefügt haben.

Fügen Sie eine davon in den Kopf Ihrer HTML-Datei ein, je nachdem, wo sich Ihre JS-Datei befindet.

Wenn es sich in der Basis-JS-Datei von Magento befindet, verwenden Sie Folgendes:

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

oder wenn es sich im js-Ordner Ihrer Haut befindet, verwenden Sie Folgendes:

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

Ich habe versucht, Ihre Lösung, aber es zeigt immer noch Konsolenfehler wie in Frage gestellt .....
— Baby in Magento

1

Um dies zu erreichen, können Sie Ihre PHP-Codevariable mithilfe der Konfigurationsvariablen an Ihren JS-Code übergeben. Fügen Sie Ihrer Datei app / design / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtml die folgende Zeile hinzu

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

nach der Zeile,

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

Jetzt können Sie mit dieser Variablen isUserLoggedInüberprüfen, ob der Benutzer in Ihrem JS-Code angemeldet ist oder nicht.
Aktualisieren Sie Ihre JS-Funktion initObserversvon

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

zu

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

Wenn ein Gastbenutzer auf die Schaltfläche "Design speichern" klickt, wird das Design nicht gespeichert und das in Ihrem Code verwendete Anmelde-Popup wird geöffnet.

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.