モジュールの外部.jsファイルコードをテンプレート[phtml]ファイルに移動する


8

以下のコードを持つカスタムモジュールがあります

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

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

我々は、この.JSファイルにPHPコードを使用することはできません、我々はからのコード存在を移動することができますどのような方法がありAbstract.js、一部には、ファイル.phtmlのファイルは?

編集する

私はラファエルの答えに従い、コードを次のように変更しました:

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

しかし、それでもAbstract.Jsファイルの結果はjs_styles1.phtmlに表示されません

レイアウトファイルhttp : //pastebin.com/BZGRaiDH

js_styles1.phtmlhttp : //pastebin.com/m85q9eMh

onclickボタン=を試していますonclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"が、これは.JSファイルでは機能しないため、.jsコードを.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>

テンプレートパスのヒントを確認すると、phtmlファイルが読み込まれますが、JSコードの結果がフロントエンドに表示されません。しかし、他のhtml、php、jsコードの結果が表示されています。

コンソール

ここに画像の説明を入力してください

ここに画像の説明を入力してください

どのようにそれを見つけるには、外部のjsライブラリをロードする必要がありますか?

編集2

私はjs_styles1.phtmlファイルで以下のコードを試しましたが、それでも機能しません

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

それは私のために働いていた場合、私は..... 50個のバウンティポイントを与える
Magentoの中に赤ちゃんの

jsファイルで使用したいPHPコードは何ですか?JavaScriptコードを使用して、phpコードと同じことを行うことができます。
Neha Raval 2017年

@NehaRavalゲストがボタンをクリックした場合にポップアップを表示したい&そのボタンをクリックした登録ユーザーをポップアップ表示したくない
Magentoの赤ちゃん

回答:


1

<?php echo $this->getChildHtml() ?>がで呼び出されてhead.phtmlいることを確認してください。

このコードが存在しない場合は、head.phtmlにこのコードを追加する必要があります

更新

次の問題が発生しました

別のjsファイルへのjsファイルへのjs依存関係

ここでaitoc / aitcg / Aitcg / View / Popup.js、aitoc / aitcg / Aitcg / View / Gallery.jsなどはaitcg / js_styles.phtmlの jsコードに依存します

あなたがこのAbstract.jsをjs_styles.phtmlに置いたので、これjs 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

つまり 、このjsコードはすべての aitoc jsファイルの後にあるため、aitocのすべてのjsファイルは取得さ properly of js_styles.phtmlません

解決:

Aitocレイアウトハンドラーのすべてのjsファイルを削除<catalog_product_view>

js_styles.phtmlでそれらすべてのjs filsを手動でコーディングします

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

はい、<?php echo $this->getChildHtml() ?>コードはhead.phtmlファイルにあります....
Magentoの赤ちゃん

また、我々はview.phtmlにこのコードを追加:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Magentoの中の赤ちゃん

あなたの貴重な時間とサポートに感謝します、それは完全にうまくいきます...私はあなたに賞金を授与します......
Magentoの赤ちゃん

2

代わりに、代わりにphtmlファイルを使用できます。

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

と:

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

次に、JSをそのphtmlファイルに移動し、PHPの変更を加えて微調整します。


おかげで、その素敵は....再び私の質問のためにあなたの答えを見て、私はあなたの答えを追っ&置き換えるaction codeことでblock code、ここのように:<block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />が、そのは結果を表示していない.js file - upload image & add text buttons are missingのようにリンク1これらのリンクのように表示される前に、リンク2 `js_styles1:コード、。 PHTML:pastebin.com/YhgmvCMx。どこで間違ったの?
Magentoの赤ちゃん2017年

ここlayout.xmlファイルは次のとおりです。pastebin.com/dbu9thPEは 、一度ご確認ください.....
Magentoの中の赤ちゃん

両方のリンクに[画像をアップロード]ボタンと[テキストを追加]ボタンが表示され、コンソールにさまざまなエラーが表示されます。もう解決しましたか?
nuovecode

1

私はあなたの質問を理解しているので、あなたはあなたのjsコードをphtmlにコピーしたいです

したがって、以下の手順に従ってください

あなたはすでにPHTMLファイルとそのフロントエンドでのレンダリングを作成したので

まず、JSレンダリング用のXMLコードをコメント/削除します。

JSコードをスクリプトTAG内のPHTMLファイルにコピーする

例として。

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

おかげで、はい私はPHTMLファイルに.jsファイル内のJavaScriptコードの存在をコピーした.....が、その私はエラーコンソール与える
赤ちゃんのMagentoの中で

最初に単にjsコードを貼り付け、それが機能していることを確認してから、コードを変更します
Murtuza Zabuawala

jsコードをphtmlコードにコピーすると、.jsコードの結果が表示されない-コードをコピーした後に「画像をアップロードしてテキストボタンを追加」が表示されない
Baby in Magento

phtmlファイルを先頭に追加
Murtuza Zabuawala

jsファイルが本文に含まれているため、このエラーが発生します
Murtuza Zabuawala

1

ヘッドファイルから貼り付けた実際のJavaを削除します。

jsファイルの場所に応じて、これらのいずれかをphtmlファイルの先頭に貼り付けます。

Magentoのベースjsファイルにある場合は、これを使用してください:

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

または、スキンのjsフォルダーにある場合は、次のようにします。

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

私はあなたの解決策を試しましたが、それでも問題の投稿されているコンソールエラーを示しています....
Magentoの赤ちゃん

1

これを実現するには、config変数を使用してPHPコード変数をJSコードに渡すことができます。以下の行をファイルapp / design / frontend / rwd / Theme1 / template / aitcg / view / options / ‌ type / cgfile.phtmlに追加します

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

行の後、

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

これで、この変数isUserLoggedInを使用して、ユーザーがJSコードにログインしているかどうかを確認できます。
あなたのJS関数を更新しますinitObserversから、

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

ゲストユーザーが[Save Design]ボタンをクリックすると、デザインは保存されず、コードで使用したログインポップアップが開きます。

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.