Magento2 in How to Remove Duplicate button in product create?
How to Remove Duplicate button in product Create/Edit page - Magento2.
magento2 product admin adminform
add a comment |
How to Remove Duplicate button in product Create/Edit page - Magento2.
magento2 product admin adminform
add a comment |
How to Remove Duplicate button in product Create/Edit page - Magento2.
magento2 product admin adminform
How to Remove Duplicate button in product Create/Edit page - Magento2.
magento2 product admin adminform
magento2 product admin adminform
edited Jul 13 '17 at 6:19
Magento2 Devloper
asked Jun 8 '17 at 14:34
Magento2 DevloperMagento2 Devloper
822933
822933
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
If you look at vendor/magento/module-catalog/Block/Adminhtml/Product/Edit.php
and vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Button/Save.php
you see that on the location where the button is created it checks if the product is duplicable:
if (!$this->getRequest()->getParam('popup') && $this->getProduct()->isDuplicable()) {
$options = [
'id' => 'duplicate-button',
'label' => __('Save & Duplicate'),
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndDuplicate', 'target' => '[data-form=edit-product]'],
],
],
];
}
So the most obvious way I could think of is to make sure the $product->isDuplicable()
will return false. It is a public method so you could use a plugin / interceptor to let it return false, or hook into the product loading and do something like $product->setIsDuplicable(false);
Note the isDuplicable()
is a method of MagentoCatalogModelProduct
and is not defined in it's service contract. Haven't tested it yet, but I'm not sure that writing an interceptor for the service contract will pick it up.
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
add a comment |
Implementation of Giel Berkers answer:
MyCompany/MyModule/etc/adminhtml/di.xml
<type name="MagentoCatalogModelProduct">
<plugin name="disable_product_duplicate" type="MyCompanyMyModulePluginProductPlugin" sortOrder="100"/>
</type>
MyCompanyMyModulePluginProductPlugin
namespace MyCompanyMyModulePlugin;
class ProductPlugin
{
/**
* Checks product can be duplicated
*
* @return boolean
*/
public function afterIsDuplicable(MagentoCatalogModelProduct $product, $result)
{
return false;
}
}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f178094%2fmagento2-in-how-to-remove-duplicate-button-in-product-create%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you look at vendor/magento/module-catalog/Block/Adminhtml/Product/Edit.php
and vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Button/Save.php
you see that on the location where the button is created it checks if the product is duplicable:
if (!$this->getRequest()->getParam('popup') && $this->getProduct()->isDuplicable()) {
$options = [
'id' => 'duplicate-button',
'label' => __('Save & Duplicate'),
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndDuplicate', 'target' => '[data-form=edit-product]'],
],
],
];
}
So the most obvious way I could think of is to make sure the $product->isDuplicable()
will return false. It is a public method so you could use a plugin / interceptor to let it return false, or hook into the product loading and do something like $product->setIsDuplicable(false);
Note the isDuplicable()
is a method of MagentoCatalogModelProduct
and is not defined in it's service contract. Haven't tested it yet, but I'm not sure that writing an interceptor for the service contract will pick it up.
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
add a comment |
If you look at vendor/magento/module-catalog/Block/Adminhtml/Product/Edit.php
and vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Button/Save.php
you see that on the location where the button is created it checks if the product is duplicable:
if (!$this->getRequest()->getParam('popup') && $this->getProduct()->isDuplicable()) {
$options = [
'id' => 'duplicate-button',
'label' => __('Save & Duplicate'),
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndDuplicate', 'target' => '[data-form=edit-product]'],
],
],
];
}
So the most obvious way I could think of is to make sure the $product->isDuplicable()
will return false. It is a public method so you could use a plugin / interceptor to let it return false, or hook into the product loading and do something like $product->setIsDuplicable(false);
Note the isDuplicable()
is a method of MagentoCatalogModelProduct
and is not defined in it's service contract. Haven't tested it yet, but I'm not sure that writing an interceptor for the service contract will pick it up.
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
add a comment |
If you look at vendor/magento/module-catalog/Block/Adminhtml/Product/Edit.php
and vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Button/Save.php
you see that on the location where the button is created it checks if the product is duplicable:
if (!$this->getRequest()->getParam('popup') && $this->getProduct()->isDuplicable()) {
$options = [
'id' => 'duplicate-button',
'label' => __('Save & Duplicate'),
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndDuplicate', 'target' => '[data-form=edit-product]'],
],
],
];
}
So the most obvious way I could think of is to make sure the $product->isDuplicable()
will return false. It is a public method so you could use a plugin / interceptor to let it return false, or hook into the product loading and do something like $product->setIsDuplicable(false);
Note the isDuplicable()
is a method of MagentoCatalogModelProduct
and is not defined in it's service contract. Haven't tested it yet, but I'm not sure that writing an interceptor for the service contract will pick it up.
If you look at vendor/magento/module-catalog/Block/Adminhtml/Product/Edit.php
and vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Button/Save.php
you see that on the location where the button is created it checks if the product is duplicable:
if (!$this->getRequest()->getParam('popup') && $this->getProduct()->isDuplicable()) {
$options = [
'id' => 'duplicate-button',
'label' => __('Save & Duplicate'),
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndDuplicate', 'target' => '[data-form=edit-product]'],
],
],
];
}
So the most obvious way I could think of is to make sure the $product->isDuplicable()
will return false. It is a public method so you could use a plugin / interceptor to let it return false, or hook into the product loading and do something like $product->setIsDuplicable(false);
Note the isDuplicable()
is a method of MagentoCatalogModelProduct
and is not defined in it's service contract. Haven't tested it yet, but I'm not sure that writing an interceptor for the service contract will pick it up.
answered Jul 13 '17 at 6:43
Giel BerkersGiel Berkers
6,80923975
6,80923975
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
add a comment |
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
Thanx for the Answer but I checked both files code remove but it's not working. plugin things I don't know how it uses. can you explain about it?
– Magento2 Devloper
Jul 13 '17 at 7:56
add a comment |
Implementation of Giel Berkers answer:
MyCompany/MyModule/etc/adminhtml/di.xml
<type name="MagentoCatalogModelProduct">
<plugin name="disable_product_duplicate" type="MyCompanyMyModulePluginProductPlugin" sortOrder="100"/>
</type>
MyCompanyMyModulePluginProductPlugin
namespace MyCompanyMyModulePlugin;
class ProductPlugin
{
/**
* Checks product can be duplicated
*
* @return boolean
*/
public function afterIsDuplicable(MagentoCatalogModelProduct $product, $result)
{
return false;
}
}
add a comment |
Implementation of Giel Berkers answer:
MyCompany/MyModule/etc/adminhtml/di.xml
<type name="MagentoCatalogModelProduct">
<plugin name="disable_product_duplicate" type="MyCompanyMyModulePluginProductPlugin" sortOrder="100"/>
</type>
MyCompanyMyModulePluginProductPlugin
namespace MyCompanyMyModulePlugin;
class ProductPlugin
{
/**
* Checks product can be duplicated
*
* @return boolean
*/
public function afterIsDuplicable(MagentoCatalogModelProduct $product, $result)
{
return false;
}
}
add a comment |
Implementation of Giel Berkers answer:
MyCompany/MyModule/etc/adminhtml/di.xml
<type name="MagentoCatalogModelProduct">
<plugin name="disable_product_duplicate" type="MyCompanyMyModulePluginProductPlugin" sortOrder="100"/>
</type>
MyCompanyMyModulePluginProductPlugin
namespace MyCompanyMyModulePlugin;
class ProductPlugin
{
/**
* Checks product can be duplicated
*
* @return boolean
*/
public function afterIsDuplicable(MagentoCatalogModelProduct $product, $result)
{
return false;
}
}
Implementation of Giel Berkers answer:
MyCompany/MyModule/etc/adminhtml/di.xml
<type name="MagentoCatalogModelProduct">
<plugin name="disable_product_duplicate" type="MyCompanyMyModulePluginProductPlugin" sortOrder="100"/>
</type>
MyCompanyMyModulePluginProductPlugin
namespace MyCompanyMyModulePlugin;
class ProductPlugin
{
/**
* Checks product can be duplicated
*
* @return boolean
*/
public function afterIsDuplicable(MagentoCatalogModelProduct $product, $result)
{
return false;
}
}
answered 8 mins ago
Patrick van BergenPatrick van Bergen
43059
43059
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f178094%2fmagento2-in-how-to-remove-duplicate-button-in-product-create%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown