browse the blogs

[ 15 May 2017 ]

(With apologies to whomever originally posted this technique – I can’t seem to find your original article. If you’d like link/credit just let me know)

As companies start to go ahead with Magento 2 builds and Magento 2 upgrades, more an more developers are wondering what to do about the missing code pools from Magento 1. If you’re not familiar with them, code pools allowed you to completely replace a Magento 1 class file with your own version. If you wanted to replace the Mage_Core_Model_Url file at

app/code/core/Mage/Core/Model/Url.php 

all you needed to do was put your new file in the local code pool

app/code/local/Mage/Core/Model/Url.php 

Behind the scenes, the code pool functionality was just another folder added to PHP’s include_path.

Magento 2 …

[ 9 May 2017 ]

List of mod_security Rules for Magento 1:

A list of instructions from the (semi?) independent Mage Security Council on installing their scanner. This sort of buries the lead – the end of the instructions point off to a list of malware fingerprint, which server administrators can use to block common attacks before they ever reach Magento.

[ 5 May 2017 ]

BFG Repo-Cleaner by rtyley:

Not quite Magento related, but we’ll let that slide. BFG is a command line program that lets you remove unwanted content from your a git repository’s history. Discovered it via a GitHub support issue on the same topic.

[ 4 May 2017 ]

The bin/magento setup:upgrade Command will Enable Non-Enabled modules · Issue #9516 · magento/magento2:

Weird bit of behavior where the setup:upgrade command will automatically enable any module you’ve dropped into app/code. Small, but annoying bit of behavior if your run into it.

[ 4 May 2017 ]

I’m writing this down so I can remember it later – if you’re not deep into Magento service contracts apologies for the word soup.

When Magento’s parsing doc block’s for parameter types, it’s only looking at interfaces – or possibly its only looking at the type it knows about. i.e. if you have something like this

<route url="/V1/pulsestorm_apitest2/things/:id" method="GET">
    <service class="Pulsestorm\Apitest2\Api\ThingRepositoryInterface" method="get"/>
    <resources>
        <resource ref="anonymous"/>
    </resources>
</route>

Magento is going to look at Pulsestorm\Apitest2\Api\ThingRepositoryInterface for the type implementations and not the concrete class you have configuration via di.xml. In other words, if you put your @param int $id in the concrete get methods instead of the …

[ 26 Apr 2017 ]

Fooman’s Magento Imagine 2017 Wrap Up:

Another developer oriented Magento Imagine 2017 wrap up. Include the slides from Kristof’s talk on Magento and composer.

[ 26 Apr 2017 ]

Over in my Patreon slack, a patron came to me with the following layout handle XML chunk.

This block of XML would successfully remove the block named breadcrumbs, but it would not successfully remove the block named product_list_toolbar.

This is one of those places where Magento’s lack of documentation and/or a cogent systems philosophy really bites practitioners in the butt. Even as an experienced M2 developer, my mind came up with multiple possible causes

  • That was <remove/> in M1, will <remove/> work in M2?
  • Is remove=true something that works by coincidence but isn’t supported?
  • Is remove=true something the works for only blocks or works for only containers? (you can use referenceBlock and referenceContainer interchangeably in Magento’s core)
  • Is handle loading order to blame here?

Worse …

[ 25 Apr 2017 ]

Magento 2 Module for Custom Reporting Grids:

Haven’t tried it yet, but this looks like a Magento 2 module that will let you easily create new Reporting Grids with a simple SQL statement.

[ 22 Apr 2017 ]

Imagine2017 Summary from Yiero Founder Jisse Reitsma:

A nice, succinct wrap up of Magento’s announcements at Imagine 2017. Lots of third party service acquisitions for EE users, not much public-news/investment on the open-source/CE/independent-developer side of things.

[ 19 Apr 2017 ]

Headless Magento 2 Resources:

“Headless Magento” – that is, an ecommerce store whose user interface uses some other technology stack for the UI/UX (i.e. javascript) while relying on Magento’s REST API endpoints for store functionality – is a hot topic in the Magento world. While this approach can explode a project’s budget (you’re reimplementing the a front-end store and any extension functionality) it is, none-the-less, popular with agencies looking to put their javascript engineering teams to work.

If your sales team has thrown you in the headless deep-end, the sitewards/headless-magento2-resources and ishakhsuvarov/going-headless GitHub repositories are two small projects that are tracking resources for developers looking to implement a headless Magento 2 system.