1

I am working a Magento2 project and I have installed a third party module magefan/module-blog which is used for manage Blog/post.This module is installed in Magento Vendor folder.

path is magento/vendor/magefun/module-blog .

I have a custom requirement and some changes/updated in block files.Since module is exist in Magento vendor folder so we can't directly changed in this module.Hence we require to override file

/var/www/html/magento2/vendor/magefan/module-blog/Block/Category/view.php

in

/var/www/html/magento2/app/code

folder.I don't have idea how to override particular that file.

if anyone know about it.Please help me.

sv3n
11.7k7 gold badges44 silver badges75 bronze badges
asked Jan 19, 2018 at 6:14
5
  • have you create any module for override this file? Commented Jan 19, 2018 at 6:15
  • Create a new module and then use preference or Plugin to override it. Commented Jan 19, 2018 at 6:16
  • Follow this inststruction magenticians.com/magento-2-override-block Commented Jan 19, 2018 at 6:18
  • @RakeshJesadiya,still I have not created any module.Do we require to create module or can do any other way? Commented Jan 19, 2018 at 6:21
  • yes you must create module Commented Jan 19, 2018 at 6:21

1 Answer 1

3

Following step need to follow

create app/code/Vendor/ModuleName/registration.php

\Magento\Framework\Component\ComponentRegistrar::register(
 \Magento\Framework\Component\ComponentRegistrar::MODULE,
 'Vendor_ModuleName',
 __DIR__
 );

create app/code/Vendor/ModuleName/etc/module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
 <module name="Vendor_ModuleName" setup_version="1.0.0" />
 </config>

create app/code/Vendor/ModuleName/etc/di.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <preference for="ThirdPartyVendor\ThirdpartyModule\Block\File" type="Vendor\ModuleName\Block\File"/>
</config>

create app/code/Vendor/ModuleName/Block/File.php

namespace Vendor\ModuleName\Block;
use ThirdPartyVendor\ThirdpartyModule\Block\File as ThirdPartyFile;
class File extends ThirdPartyFile
{
...........
...........
}

Run Following Command:

 bin/magento setup:di:compile
 bin/magento c:f
answered Jan 19, 2018 at 9:07
1
  • The for attribute in preference tab will not accept .php . You should just use ThirdPartyVendor\ThirdpartyModule\Block\File Commented Nov 17, 2020 at 10:13

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.