переместить внешний код файла .js модуля в файл шаблона [phtml]


8

У нас есть пользовательский модуль с кодом ниже

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

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

Поскольку мы не можем использовать php-код в этом файле .JS , есть ли способ перенести код из 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.phtml : http://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, если так, как это найти?

Edit2

Я пробовал код ниже в файле js_styles1.phtml, но все равно не работает

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

я дам 50 баллов, если это сработало для меня .....
Малыш в Magento

Какой php-код вы хотите использовать в своем js-файле? Вы можете использовать код JavaScript, чтобы сделать то же самое, что и код php.
Неха Равал

@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 и т. Д. Зависит от js-кода aitcg / js_styles.phtml.

Как вы положили этот 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 не получаются, так properly of js_styles.phtml как этот js-код после всех aitoc js-файлов.

Решение:

Удалите все js-файлы обработчика макетов Aitoc<catalog_product_view>

и вызвать все эти файлы JS в js_styles.phtml вручную код

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

вот файл layout.xml: pastebin.com/dbu9thPE , пожалуйста, проверьте один раз .....
Малыш в Magento

Я вижу кнопки «загрузить изображение» и «добавить текст» в обеих ссылках, а также различные ошибки в консоли. Вы уже решили?
nuovecode

1

как я понимаю ваш вопрос, вы хотите скопировать свой код js в phtml

Итак, следуйте инструкциям ниже

как вы уже создали файл PHTML и его рендеринг на веб-интерфейсе

сначала закомментируйте / удалите этот код XML для рендеринга JS.

Скопируйте код JS в файл PHTML в сценарии TAG

например

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

спасибо, да я скопировал код javascript, присутствующий в файле .js, в файл phtml ..... но он дает мне ошибки консоли
Baby in Magento

Сначала просто скопируйте код вставки js и убедитесь, что он работает, а затем измените код
Murtuza Zabuawala

когда я копирую js-код в phtml-код, я не вижу никаких результатов .js-кода - отсутствует кнопка «загрузить изображение и добавить текст» после того, как я скопировал код
Baby in Magento

добавьте свой phtml-файл в голову
Муртуза Забуавала

Вы получаете эту ошибку, потому что ваш файл js находится в теле
Murtuza Zabuawala

1

Удалите фактическую Java, которую вы вставили из заголовочного файла.

Вставьте один из них в начало вашего phtml-файла, в зависимости от того, где находится ваш js-файл.

Если он находится в базовом js-файле Magento, используйте это:

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

Я попробовал ваше решение, но оно все еще показывало ошибки консоли, как
Baby in Magento

1

Чтобы достичь этого, вы можете передать переменную PHP-кода в код JS с помощью переменной config. Добавьте строку ниже в ваш файл 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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.