将模块的外部.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 button =,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

@NehaRaval如果访客单击按钮,我想显示弹出式窗口,我不想显示弹出式单击该按钮的注册用户。
Magento婴儿,

Answers:


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

意味着aitoc的所有js文件都不会获取, properly of js_styles.phtml因为此js代码在所有 aitoc js文件之后。

解:

删除Aitoc布局处理程序的所有js文件<catalog_product_view>

然后手动调用js_styles.phtml中的所有js文件

<!--  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的宝贝,2017年

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 codeblock codeas 替换为此处:<block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />,但是在这些链接显示为link2之前,它未.js file - upload image & add text buttons are missinglink1中显示as的结果,代码:`js_styles1。 phtml:pastebin.com/YhgmvCMx。我在哪里做错了?
Magento婴儿,

这是layout.xml文件:pastebin.com/dbu9thPE ,请检查一次.....
Magento的婴儿,

我可以在两个链接中看到“上传图像”和“添加文本”按钮,以及控制台中的不同错误。你解决了吗
nuovecode

1

据我了解您的问题,您想在phtml中复制js代码

因此,请按照以下步骤操作

因为您已经创建了PHTML文件并将其呈现在前端

首先,注释/删除该XML代码以进行JS渲染。

将JS代码复制到脚本TAG中的PHTML文件

对于前。

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

谢谢,是的,我将.js文件中存在的javascript代码复制到phtml文件中..但是它给了我控制台错误
Magento

首先只需复制粘贴js代码并检查其是否正常运行,然后再修改代码
Murtuza Zabuawala

当我将js代码复制到phtml代码时,我看不到.js代码的任何结果-复制代码后缺少“上载图像并添加文本按钮”
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)); 
} 
},

现在,当来宾用户单击“保存设计”按钮时,该设计将不会保存,并且会打开您在代码中使用的登录弹出窗口,

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.