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.