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>
Baby in Magento
quelle
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 } ?>
Amit Bera
quelle
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.

Raphael beim digitalen Pianismus
quelle
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> 
Murtuza Zabuawala
quelle
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>
LNGLA
quelle
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>
Jaimin Sutariya
quelle