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.

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?
    – akgola
    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
2
  • The for attribute in preference tab will not accept .php . You should just use ThirdPartyVendor\ThirdpartyModule\Block\File
    – AbsarAkram
    Commented Nov 17, 2020 at 10:13
  • thanks it was typo updated answer :) Commented Nov 17, 2020 at 10:24

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.