Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Не заводится ))сохрани отдельно старый файл и замени его этим. Почисти папку generated и var/cache
main.CRITICAL: Class Magento\Framework\MessageQueue\PoisonPill\PoisonPillPutInterface does not exist
Class Ced\CsMarketplace\Model\Adminhtml\Config\Data\Interceptor generation error: The requested class did not generate properly, because the 'generated' directory permission is read-only. If --- after running the 'bin/magento setup:di:compile' CLI command when the 'generated' directory permission is set to write --- the requested class did not generate properly, then you must add the generated class object to the signature of the related construct method, only.
Fatal error: Class 'Ced\CsDeal\Block\Edit\Magento\Backend\Block\Widget\Tabs' not found in ************\app\code\Ced\CsDeal\Block\Edit\Tabs.php on line 21
Не заводится ))
Изначальная ошибка не появляется уже, зато вот такое пишет:
Код:main.CRITICAL: Class Magento\Framework\MessageQueue\PoisonPill\PoisonPillPutInterface does not exist Class Ced\CsMarketplace\Model\Adminhtml\Config\Data\Interceptor generation error: The requested class did not generate properly, because the 'generated' directory permission is read-only. If --- after running the 'bin/magento setup:di:compile' CLI command when the 'generated' directory permission is set to write --- the requested class did not generate properly, then you must add the generated class object to the signature of the related construct method, only.
С правами всё нормально, под виндой запускаю... Пробовал setup:di:compile, тоже выдаёт ошибку:
Код:Fatal error: Class 'Ced\CsDeal\Block\Edit\Magento\Backend\Block\Widget\Tabs' not found in ************\app\code\Ced\CsDeal\Block\Edit\Tabs.php on line 21
На всякий случай Tabs.php прикрепляю ))
Если не сложно, подскажи ещё раз, плиз. Если будет дальше продолжаться с ошибками, то уже не буду беспокоить, а то можно до бесконечности их отлавливать иногда ))
Не, после исправления предыдущих, появляются следующие ошибки, так весь код переписать можно )) ...по первому удали строку 123 и на 122 запятую в том же файле, попробуй. Что с правами там у тебя непонятно. А так судя по всему версия маджентовского фреймворка не контачит с ним.
по второму поставь слеш вот такой \ перед Magento\Backend\Block\Widget\Tabs в 21 строке
чисти кэш
<div id="custom-popup-modal">
<?php if ($block->getHelper()->usePrivateContent()):?>
<div class="welcome"><?php echo __("We're happy that you've chosen us!")?></div>
<div class="choose"><?php echo __("Would you like to continue as a business customer or private customer?")?></div>
<!-- <li class="switcher-label" data-bind="scope: 'switcher'"><span data-bind="text: switcher().label"></span></li>-->
<li class="switcher-dropdown" data-bind="scope: 'switcher'">
<script type="text/x-magento-init">
{
"*":
{
"Magento_Ui/js/core/app":
{
"components":
{
"switcher":
{
"component": "Anowave_TaxSwitch/js/switcher",
"config":
{
"endpoint": "<?php echo $block->getUrl('taxswitch/index/index') ?>"
}
}
}
}
}
}
</script>
<script>
var bindTrack = <?php echo $block->getHelper()->getTrack() ?>;
var bindRender = function()
{
return true;
};
var bindRenderOptions = function()
{
<?php if (false):?>
<?php
/**
* This is kind of dirty workaround. value: switcher().current doesn't seem to work in Magento 2.1.2
*/
?>
var select = jQuery('select[name=tax_display]'), current = jQuery(':hidden[name=current]').val(), current_arg = jQuery(':hidden[name=current_arg]').val();
if (0 < parseInt(current_arg))
{
select.val(current_arg);
}
else
{
select.val(current);
}
<?php endif ?>
return this;
};
var bindChange = function(target, event)
{
if (event.originalEvent)
{
if (true == bindTrack.enable)
{
/**
* Get tax display type
*/
bindTrack.fieldsObject['eventLabel'] = jQuery('select[name=tax_display]').find('option:selected:first').text();
if ('ua' == bindTrack.type)
{
if ('undefined' !== typeof ga)
{
ga('send', bindTrack.fieldsObject);
}
}
else
{
if ('undefined' !== typeof dataLayer)
{
bindTrack.fieldsObject['event'] = 'taxSwitch';
/**
* Push event to dataLayer
*/
dataLayer.push(bindTrack.fieldsObject);
}
}
}
jQuery(event.target).parents('form:first').submit();
}
};
</script>
<div data-bind="text: switcher().select"></div>
<input type="hidden" id="current" name="current" data-bind="value: switcher().current" />
<input type="hidden" name="current_arg" value="<?php echo (int) @$_GET['tax_display'] ?>" />
<form method="post" action="<?php echo $block->getUrl('taxswitch/index/switch')?>">
<select id="switchoptions" name="tax_display" class="tax_display_select" data-bind="event: { change: bindChange }, afterRender: bindRender, optionsAfterRender: bindRenderOptions, options: switcher().options, optionsText: 'label', optionsValue: 'value', value: switcher().current"></select>
</form>
</li>
<?php else: ?>
<?php
/**
* This will be deprecated in next version
*/
?>
<li><?php echo __('Show prices') ?></li>
<li>
<form method="post" action="<?php echo $block->getUrl('taxswitch/index/switch')?>">
<input type="hidden" name="form_key" value="<?php echo $block->getFormKey() ?>" />
<select name="tax_display" class="tax_display_select" onchange="this.form.submit()">
<?php foreach($block->getOptions() as $option):?>
<option value="<?php echo $option['value'] ?>" <?php if ($option['checked']):?>selected<?php endif ?>><?php echo $option['label'] ?></option>
<?php endforeach?>
</select>
</form>
</li>
<?php endif ?>
</div>
<script>
require(
[
'jquery',
'Magento_Ui/js/modal/modal'
],
function(
$,
modal
) {
var options = {
type: 'popup',
responsive: true,
innerScroll: true,
modalClass: 'custom-popup-modal',
buttons: [{
text: $.mage.__('Close'),
class: '',
click: function () {
this.closeModal();
}
}]
};
$( document ).ready(function() {
var popup = modal(options, $('#custom-popup-modal'));
$('#custom-popup-modal').modal('openModal');
});
}
);
</script>
Приветствую, проблема такая.
Хотим сразу же со старта встречать посетителей модальным окном, в котором предлагается выбрать, является ли клиент частным лицом или фирмой. Для того чтобы сразу же показывать соот-е цены.
Т.е. окно всплывает, выбираешь в выпадающем списке опцию одну из двух, жмешь ок и все.
Но вот мои коллеги что то перемудрили по-моему, и я сам не могу найти, где собака зарыта - проблема в том, что после выбора опции в дропдауне окно закрывается, не дожидаясь ок - в общем то пусть бы так и было. Но после закрытия окно через секунду открывается снова, и так пока принудительно не нажмешь ок или х .
И после перезагрузки страницы окно всплывает снова и снова, даже если выбрал первую - дефолтную - опцию и нажал ок. Тут похоже с хранением coockies проблема, если я правильно понимаю.
Сайт в разработке, к сожалению, доступен только из внутренней сети, поэтому могу только привести код попапа.
Собственно, вот он.
Ну или предложите плз другое решение для этой задачи, желательно все же бесплатное.PHP:<div id="custom-popup-modal"> <?php if ($block->getHelper()->usePrivateContent()):?> <div class="welcome"><?php echo __("We're happy that you've chosen us!")?></div> <div class="choose"><?php echo __("Would you like to continue as a business customer or private customer?")?></div> <!-- <li class="switcher-label" data-bind="scope: 'switcher'"><span data-bind="text: switcher().label"></span></li>--> <li class="switcher-dropdown" data-bind="scope: 'switcher'"> <script type="text/x-magento-init"> { "*": { "Magento_Ui/js/core/app": { "components": { "switcher": { "component": "Anowave_TaxSwitch/js/switcher", "config": { "endpoint": "<?php echo $block->getUrl('taxswitch/index/index') ?>" } } } } } } </script> <script> var bindTrack = <?php echo $block->getHelper()->getTrack() ?>; var bindRender = function() { return true; }; var bindRenderOptions = function() { <?php if (false):?> <?php /** * This is kind of dirty workaround. value: switcher().current doesn't seem to work in Magento 2.1.2 */ ?> var select = jQuery('select[name=tax_display]'), current = jQuery(':hidden[name=current]').val(), current_arg = jQuery(':hidden[name=current_arg]').val(); if (0 < parseInt(current_arg)) { select.val(current_arg); } else { select.val(current); } <?php endif ?> return this; }; var bindChange = function(target, event) { if (event.originalEvent) { if (true == bindTrack.enable) { /** * Get tax display type */ bindTrack.fieldsObject['eventLabel'] = jQuery('select[name=tax_display]').find('option:selected:first').text(); if ('ua' == bindTrack.type) { if ('undefined' !== typeof ga) { ga('send', bindTrack.fieldsObject); } } else { if ('undefined' !== typeof dataLayer) { bindTrack.fieldsObject['event'] = 'taxSwitch'; /** * Push event to dataLayer */ dataLayer.push(bindTrack.fieldsObject); } } } jQuery(event.target).parents('form:first').submit(); } }; </script> <div data-bind="text: switcher().select"></div> <input type="hidden" id="current" name="current" data-bind="value: switcher().current" /> <input type="hidden" name="current_arg" value="<?php echo (int) @$_GET['tax_display'] ?>" /> <form method="post" action="<?php echo $block->getUrl('taxswitch/index/switch')?>"> <select id="switchoptions" name="tax_display" class="tax_display_select" data-bind="event: { change: bindChange }, afterRender: bindRender, optionsAfterRender: bindRenderOptions, options: switcher().options, optionsText: 'label', optionsValue: 'value', value: switcher().current"></select> </form> </li> <?php else: ?> <?php /** * This will be deprecated in next version */ ?> <li><?php echo __('Show prices') ?></li> <li> <form method="post" action="<?php echo $block->getUrl('taxswitch/index/switch')?>"> <input type="hidden" name="form_key" value="<?php echo $block->getFormKey() ?>" /> <select name="tax_display" class="tax_display_select" onchange="this.form.submit()"> <?php foreach($block->getOptions() as $option):?> <option value="<?php echo $option['value'] ?>" <?php if ($option['checked']):?>selected<?php endif ?>><?php echo $option['label'] ?></option> <?php endforeach?> </select> </form> </li> <?php endif ?> </div> <script> require( [ 'jquery', 'Magento_Ui/js/modal/modal' ], function( $, modal ) { var options = { type: 'popup', responsive: true, innerScroll: true, modalClass: 'custom-popup-modal', buttons: [{ text: $.mage.__('Close'), class: '', click: function () { this.closeModal(); } }] }; $( document ).ready(function() { var popup = modal(options, $('#custom-popup-modal')); $('#custom-popup-modal').modal('openModal'); }); } ); </script>
Hi, great, but with Magento 2.3 not compatibleHi Typus !
Maybe your team can use the code from this plugin : Для просмотра ссылки Войдиили Зарегистрируйся
If you change some text and add your custom code, it should be ok, no ?
Hi, great, but with Magento 2.3 not compatible
Как-то обсуждали, что используя версию b2b можно фактически превратить магаз в Мультивендор без сторонних расширений. И кстати есть такая CMS orocommerce, B2B платформа от создателей magento, по функционалу очень похожа на magento, но они и позиционируют себя как мультивендор из коробки, а по логике бизнес процессов та же magento b2b Для просмотра ссылки ВойдиНе, после исправления предыдущих, появляются следующие ошибки, так весь код переписать можно )) ...
Буду или свежее версию маркетплейса искать (модуль здесь на форуме брал), или пробовать на младших версиях магенто.
В любом случае, огромное спасибо за участие.
Ой, не, спасибо Ещё одну платформу изучатьКак-то обсуждали, что используя версию b2b можно фактически превратить магаз в Мультивендор без сторонних расширений. И кстати есть такая CMS orocommerce, B2B платформа от создателей magento, по функционалу очень похожа на magento, но они и позиционируют себя как мультивендор из коробки, а по логике бизнес процессов та же magento b2b Для просмотра ссылки Войдиили Зарегистрируйся