di chuyển mã tệp .js bên ngoài của mô-đun sang tệp mẫu [phtml]


8

Chúng tôi có một mô-đun tùy chỉnh với mã dưới đây

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

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

chúng ta không thể sử dụng mã php trong tệp .JS này , có cách nào để chúng ta có thể di chuyển mã hiện diện từ Abstract.jstệp này sang .phtmltệp khác không?

Biên tập

Tôi đã làm theo câu trả lời của Raphael và thay đổi mã như ở đây:

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

nhưng kết quả tệp Tóm tắt vẫn không hiển thị trong js_styles1.phtml

tập tin bố cục : http://pastebin.com/BZGRaiDH

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

Tôi đang thử nút onclick = onclick="setproductlogin('<?php echo $_product->getEntityId()?>');setrequestlogin();"nhưng điều này không hoạt động trong tệp .JS, vì vậy chỉ có tôi đang cố gắng sao chép mã .js thành mã .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>

Khi tôi kiểm tra gợi ý đường dẫn mẫu, nó tải tệp phtml, nhưng kết quả mã JS không hiển thị ở lối vào. nhưng các kết quả mã html, php, js khác đang hiển thị .....

bảng điều khiển

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Có phải chúng ta cần tải bất kỳ thư viện js bên ngoài nếu vậy làm thế nào để tìm thấy nó?

Chỉnh sửa2

Tôi đã thử mã bên dưới trong tệp js_styles1.phtml, nhưng nó vẫn không hoạt động

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

tôi sẽ cho 50 điểm thưởng nếu nó hiệu quả với tôi .....
Em bé ở Magento

Mã php nào bạn muốn sử dụng trong tệp js của bạn? Bạn có thể sử dụng mã javascript để làm điều tương tự như mã php.
Neha Raval

@NehaRaval Tôi muốn hiển thị cửa sổ bật lên nếu khách nhấp vào nút & tôi không muốn hiển thị cửa sổ bật lên người dùng đã đăng ký nhấp vào nút đó.
Em bé ở Magento

Câu trả lời:


1

Đảm bảo rằng <?php echo $this->getChildHtml() ?>được gọi trên của bạn head.phtml.

Nếu mã này không thoát thì bạn cần thêm mã này tại head.phtml

Cập nhật

Bạn có vấn đề vì

Sự phụ thuộc của Js vào một tệp js vào một tệp js khác

Ở đây aitoc / aitcg / Aitcg / View / Popup.js, aitoc / aitcg / Aitcg / View / Gallery.js , v.v ... phụ thuộc vào mã js của aitcg / js_styles.phtml

Như bạn đã đặt Abstract.js này tại js_styles.phtml và cái nàyjs 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

Điều đó có nghĩa là tất cả các tệp js của aitoc không nhận được properly of js_styles.phtmlmã js này nằm sau tất cả các tệp js aitoc.

Giải pháp:

Xóa tất cả các tệp js của trình xử lý bố cục Aitoc<catalog_product_view>

và gọi tất cả các bộ phim js tại js_styles.phtml mã thủ công

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

vâng, <?php echo $this->getChildHtml() ?>mã có trong tập tin head.phtml .....
Em bé trong Magento

Ngoài ra, chúng tôi đã thêm mã này vào view.phtml:<?php echo $this->getChildHtml('aitcg_js_styles1'); ?>
Em bé trong Magento

Cảm ơn vì thời gian và sự hỗ trợ vô giá của bạn, nó hoạt động rất tốt ...... tôi sẽ thưởng tiền thưởng cho bạn ......
Em bé ở Magento

2

Thay vào đó, bạn có thể sử dụng tệp phtml bằng cách thay thế:

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

Với:

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

Sau đó, chỉ cần di chuyển JS của bạn trong tệp phtml đó và điều chỉnh nó với các sửa đổi PHP của bạn.


Cảm ơn, thật vui khi thấy câu trả lời của bạn cho câu hỏi của tôi một lần nữa .... Tôi đã làm theo câu trả lời của bạn và được thay thế action codebằng block codenhư ở đây : <block type="aitcg/template" name="aitcg_js_styles1" template="aitcg/js_styles1.phtml" />, nhưng nó không hiển thị kết quả .js file - upload image & add text buttons are missingnhư trong link1 , trước khi các liên kết đó hiển thị dưới dạng link2 , mã: `js_styles1. phtml: pastebin.com / YhgmvCMx . tôi đã làm sai ở đâu?
Em bé ở Magento

đây là tập tin layout.xml: pastebin.com/dbu9thPE , vui lòng kiểm tra một lần .....
Em bé trong Magento

Tôi có thể thấy các nút "tải lên hình ảnh" và "thêm văn bản" trong cả hai liên kết và các lỗi khác nhau trong bảng điều khiển. Bạn đã giải quyết chưa?
nuovecode

1

vì tôi hiểu câu hỏi của bạn, bạn muốn sao chép mã js của mình trong phtml

vì vậy, hãy làm theo các bước dưới đây

như bạn đã tạo tệp PHTML và kết xuất tệp trên frontend

trước hết hãy nhận xét / xóa mã XML đó để hiển thị JS.

Sao chép mã JS vào tệp PHTML trong tập lệnh TAG

cho người cũ

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

cảm ơn, vâng, tôi đã sao chép mã javascript có trong tệp .js sang tệp phtml ..... nhưng nó mang lại cho tôi lỗi bảng điều khiển
Em bé trong Magento

Đầu tiên chỉ cần sao chép mã js và kiểm tra xem nó có hoạt động không và sau đó sửa đổi mã
Murtuza Zabuawala

Khi tôi sao chép mã js sang mã phtml, tôi không thể thấy bất kỳ kết quả nào của mã .js - "tải lên hình ảnh và thêm nút văn bản" bị thiếu sau khi tôi sao chép mã
Em bé trong Magento

thêm tập tin phtml của bạn vào đầu
Murtuza Zabuawala

bạn gặp lỗi này vì tập tin js của bạn nằm trong cơ thể
Murtuza Zabuawala

1

Xóa java thực tế bạn đã dán ra khỏi tệp đầu.

Dán một trong số này vào phần đầu của tệp phtml của bạn, tùy thuộc vào vị trí tệp js của bạn.

Nếu nó nằm trong tệp js cơ sở của Magento, hãy sử dụng:

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

hoặc nếu nó nằm trong thư mục js của làn da của bạn, hãy sử dụng:

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

Tôi đã thử giải pháp của bạn, nhưng nó vẫn hiển thị lỗi bảng điều khiển như được đăng trong câu hỏi .....
Em bé trong Magento

1

Để đạt được điều này, bạn có thể chuyển biến mã PHP của mình sang mã JS bằng biến cấu hình. Thêm dòng dưới đây vào ứng dụng tệp / thiết kế / frontend / rwd / Theme1 / template / aitcg / view / Options / ‌ type / cgfile.phtml

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

sau dòng

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

Bây giờ bạn có thể sử dụng biến này isUserLoggedInđể kiểm tra xem người dùng có đăng nhập hay không trong mã JS của bạn.
Cập nhật chức năng JS của bạn initObservers, từ

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

đến

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

Bây giờ khi một người dùng khách sẽ nhấp vào nút "Lưu thiết kế", thiết kế sẽ không lưu và nó sẽ mở cửa sổ bật lên đăng nhập mà bạn đã sử dụng trong mã của mình,

<div onclick="return setproductlogin(\'<?php echo Mage::registry("current_product")->getId()?>\');setrequestlogin();"> 
<button class="button btn-cart">Save design</button> 
</div>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.