Warning: Your browser is very out-of-date. You should upgrade to a better browser.

2021

PHP August 2021

Google Sheets to PHP Array

This PHP function accepts a public Google Sheets URL and converts it into a PHP array. You can use the array to either display the...
Notes August 2021

Apache VirtualHost with Reverse Proxy

This post documents the process of setting up a reverse proxy to load one (origin) website in the subdirectory of another. During this process the...
Magento July 2021

Magento 2 Blog Extensions

While Magento isn’t the go-to platform for blogs it can be useful for store owners to have a quick and easy way to post updated...
Frontend July 2021

AOS: The Animate On Scroll Library

AOS is a simple CSS/JS based animation on scroll library by Michał Sajnóg. Easy to install and highly configurable. This is a basic introduction, there...
Notes June 2021

Upcoming changes to eBay's PayPal Payments

Over the course of 2021 eBay will be incrementally changing how it works with sellers. Changes include updates to the fee structure, how fees are...
Shopify May 2021

What does Shopify do?

Shopify is an ecommerce platform that hosts your website for selling products and services. It helps organize the layout of your store's appearance through different...
Notes May 2021

Choose a better browser

Updated for 2020 A run down of the most popular web browsers including Firefox, Chrome, Edge and Opera as well some alternate options if you'd like something different....
Magento April 2021

Notes: Magento 2 Directory Structure

Magento 1 A brief reminder of the Magento 1 folder structure: app/code followed by either /core for core files /community for third party extensions /local...
Magento March 2021

Magento 2.4.2

The latest version of Magento has been released - Magento version 2.4.2 is the usual mix of security updates, performance and some improvements to the...
PHP March 2021

PHP cURL Requests with JSON or XML

The following post will explain how to use PHP/cURL to retrieve data in JSON or XML and process it for using in your PHP application...
PHP February 2021

Global Payments: Strong Customer Authentication (SCA) and 3D Secure 2

The roll out of 3D Secure 2 has been a long drawn-out process not helped by the COVID–19 pandemic. Part of the update has included...
Shopify January 2021

Shopify: Create a Discount Code

A quick guide to help set-up a discount code in a Shopify store. First login to your Shopify store admin area and click on Discounts...

2020

Magento November 2020

What is Magento Open Source?

Previously known as Magento Community Edition, Magento Open Source is the ecommerce platform. Adobe which acquired Magento in 2018 has confirmed the open source edition...
WordPress October 2020

WordPress - Rename the Posts section in Admin

The PHP script below can be added to the WordPress Theme functions.php file. It will rename the standard “posts” section to “stories”. Replace ‘stories’/’story’ with...
Magento September 2020

Moving on from Magento: OpenMage and Mage One

While many companies have already upgraded to Magento 2 or moved on to alternative ecommerce platforms like Shopify, many smaller companies or larger companies with...
WordPress August 2020

Notes on Transferring a WordPress site to AWS

Some notes on transferring an existing WordPress site to Amazon Web Services and some common issues. MySQL Import Fail If the import fails on import...
Magento April 2020

Coronavirus: Ecommerce in a Pandemic

Online sellers need to keep on top of the impact COVID—19 is and will continue to have on retailers. The links below are some thoughts...
Magento March 2020

Coronavirus: Managing your Magento ecommerce store in Lockdown

The UK has now entered lockdown with everyone being told to stay at home. The spread of coronavirus (COVID—19) continues to increase day by day...
Magento March 2020

Magento 2: Show address fields on the user registration form

This post shows you how to add the customer address fields to the customer registration page. It uses the existing setShowAddressFields method for displaying the...
Security February 2020

Security: DNS over HTTPS

Whenever you visit a website, even if you are using a site with SSL, the DNS query that converts the web address into an IP...
Notes February 2020

Website Optimisation with Pingdom Speed Test

There are plenty of website speed tests out there, some are better than others. Pingdom is one of these tools, this post explains how to...
Magento February 2020

Choose Magento ecommerce in Belfast, Northern Ireland

If you are a business in Belfast or Northern Ireland who is looking to expand your presence online, Magento is a great platform to take...
Security January 2020

Best web browsers for security

A few alternative browser options for those looking to protect themselves against analytics, tracking, surveillance, and even censorship. Mozilla Firefox Iridium Ungoogled Chrome Tor Browser...

2019

WordPress November 2019

WordPress Security - Nginx Hardening

Techniques for hardening WordPress Sites running on an Nginx server to enhance security. Limit Access to Admin Panel Limit XMLRPC Access This will lock down...
WordPress November 2019

WordPress Security - Hardening Introduction and Plugins

This post is designed to give an overview of some of the techniques for hardening or securing WordPress from malicious attacks and hacking. Security in...
Notes Frontend November 2019

Simple jQuery Cookie Pop-up

This is a simple EU cookie notification pop-up for legacy websites. All that’s required is jQuery. Add the following HTML, jQuery script and apply some...
Notes November 2019

Automatically Deploy website from Github

This walk through will allow you to set-up a website to automatically deploy on a remote server whenever updates are pushed to the GitHub repository....
Magento October 2019

Magento 2.3.3

The latest version of Magento has been released - Magento version 2.3.3 is all about security and performance. Security Support has been added to Magento...
Wordpress October 2019

Setting up WordPress on Amazon Web Services (AWS) EC2

Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure, resizable compute capacity in the cloud. It is designed to make web-scale...
Notes October 2019

Choosing the right ecommerce platform

Choosing the right ecommerce platform is an important decision for any business looking to sell their products online. The three options below are tried-and-tested ecommerce...
Notes October 2019

Jekyll: Post Loop in Liquid Templates

Jekyll uses the Liquid templating language to process templates. This post provides a basic example to show the five latest blog posts and highlight the...
WordPress October 2019

[Notes] WordPress + React Docker Starter Kit

I’ve been experimenting with a Headless WordPress + React Starter Kit from Postlight. It’s an automated toolset to create a powerful web publishing tool. Headerless...
Notes SEO June 2019

Remove outdated content from Google Search Results

From time to time unwanted pages can appear in Google Search Results. Could be a temporary page, old content or even a test page that’s...
Magento May 2019

Magento 1: End of life

Magento 1’s expected end of life is fast approaching. Many, many merchants are still up and running on the system need to think about what...
Magento April 2019

Magento 2 Configurable Product Import

Magento 2 allows configurable products to be imported through the CMS. Unlike Magento 1 where Magmi generally did all the hard work when it came...
Magento April 2019

Magento Code: Magento 2 Cache Refresh Script

This is a stand alone script which can be called to refresh the cache in Magento 2 The script hooks into Bootstrap to generate a...
Magento April 2019

Magento Code: Magento 2 Indexer Script

This is a stand alone script which can be called to reindex a Magento 2 Site The script will create a unique instance of the...
Magento March 2019

Magento 1 to Magento 2 Migration Process (Part 1)

While the Magento 1 platform is still active and supported there’s less urgency to switch-up to Magento 2. There are bennefits to upgrading to Magento...
Magento March 2019

Magento 1 Ongoing Support and End of life

Some thoughts on the expected demise of Magento 1. Magento 1 - Official End Date The official end date of the Magento 1 project was...
Notes January 2019

Introduction to Ubuntu MATE

As a PHP developers most of my time is spent working with Linux servers. When Microsoft introduced the Linux Sub-system for Windows I jumped at...

2018

Magento December 2018

Magento Belfast

Magento eCommerce was released on March 31, 2008, by Varien and developed on Zend Framework, it's a feature-rich ecommerce platform that provides merchants with unprecedented...
Magento June 2018

Magento2 – Show/hide layered navigation on category pages

Magento Admin Panel > Catalog > Categories Click into the category you want to update and then expand the “Design”. To remove a layered navigation...
Notes June 2018

Start/Stop XAMPP on Ubuntu using Terminal

To start XAMPP run the following and the command will return a list of running services: sudo /opt/lampp/lampp start To stop XAMPP run the command...
Magento June 2018

Magento2 CLI: Set Ubuntu PHP Version to match LAMPP/XAMPP

The Magento2 Command Line Interface (CLI) needs to use the same version of PHP as your local web environment. You can check this by setting...
Magento May 2018

Enable Magento2 Command-Line Interface (CLI) on Linux

For both development, ongoing management and scheduled tasks Magento’s Command Line Interface is able to do it all. To enable CLI for Magento to you’ll...
Notes April 2018

Cookie pop-up notification for legacy websites.

Simple no-nonsense JavaScript and CSS cookie pop-up notification for legacy websites. Required jQuery. Reusable cookie pop-up
PHP March 2018

The latest update to PHP7 is here… 7.2.0

This month PHP released the latest update PHP7.2.0. While PHP 7.2 is an improvement, it is not groundbreaking as the jump from PHP5.6 to PHP7.0....
Shopify February 2018

Shopify: Setting up a multipurpose CMSed liquid homepage section

Setting up a multipurpose CMSed liquid homepage section for Shopify. The below schema includes two sets of data A YouTube Video display A list of...
Shopify February 2018

Shopify: List product variations on collection pages

The code below will allow you to display a set of product variations on a Shopify product collection pages. Set this code in the collections...
Magento February 2018

CMS blocks disappear after version 1.9.2.2 upgrade or SUPEE-6788 patch

Magento veresion 1.9.2.2 and patch SUPEE-6788 both introduce a new security featuer to Magento. Blocks on the front-end have to be enabled or whitelisted before...
Magento February 2018

Magento Code: Seasonal sales link

A lot of sites have a seasonal sale which needs turned on and promoted at different times during the year . This code takes the...
Notes January 2018

Running Ubuntu on Windows

**One of my favourite aspects of Windows 10 has been the Linux subsystem for Windows. ** I’ve been using it since launch partly because it...
WordPress January 2018

Why is WordPress so popular?

WordPress is a free and open source software used by millions of people around the world to create websites and blogs. The most popular features...
Security January 2018

GDPR: What is the EU General Data Protection Regulation?

The General Data Protection Regulation (GDPR) will have an impact on how organisations handle the personal information that they look after. GDPR is a regulation...

2017

Magento October 2017

Checkout problems upgrading to Magento 1.9.3.4+

Magento version 1.9.3.4 include patch SUPEE-9767 V2 which includes security patching for the checkout process. For your current front-end templates to work with this patch...
Magento October 2017

Upgrading Magento 1 through the Magento Connect Downloader

If you don’t fancy upgrading Magento 1 through command line, you can upgrade Magneto core using Magento’s in-built Magento Connect Downloader. Load yoursite.com/downloader. Login with...
Magento October 2017

Upgrading Magento 1 through command line

Alternative: Upgrade Magneto using the Magento Connect Downloader Upgrading Magento is a must to keep your store in top-top condition, protect your customers and your...
Notes August 2017

How to update your hosts file.

Every computer has a file on it which allows the owner to specify where a website is loaded from. A hosts file is a simple...
Magento August 2017

Magento Server Transfer – Tried and Tested Method

Moving an entire Magento site from one server to another or between hosts can be a daunting task for non-server administrators. I’m going to try...
Magento August 2017

Ordering assets in Magento 2

This one will come in useful until Magento 2 sorts itself out. For some reason, Magento 2 has no way to order assets out of...
Magento June 2017

Magento Code: Innoexts Currency Pricing Module Price and Special Price Import via SSH

Magento Code: Innoexts Currency Pricing Modul Price and Special Price Imports vis SSH Standard Price Import Use the following command: `php /home/var/public/html/magento/shell/Innoexts/CurrencyPricing/Catalog/Product/Price/Compound/Import.php --file-path /var/import/ --file-filename standard_price.csv`...
PHP June 2017

PHP: glob

glob($string); Return an array of pathnames matching a specific pattern. // Find all CSV files in the /home/var/imports/ directory glob("/home/var/imports/hello-*.csv"); /home/var/imports/hello-world.csv – Returned /home/var/imports/hell-world.csv –...
Magento June 2017

Magento Code: Check an import directory for new product CSVs and process using a Magmi profile

This script will first scan the var/import directory for all CSV files starting “import-” using the glob() function in PHP. It will return an array...
Magento June 2017

Magento: What are Sage Pay Orphan Transactions?

This is a regular issue when using Sage Pay with Magento that needs a bit of explaining. Sage Pay transactions started by the customer are stored...
PHP May 2017

PHP: header

header($string); Used to send a raw HTTP header, often used for page redirects. Must be called before any other output is sent. // Redirect the...
PHP May 2017

PHP: str_replace

str_replace($search,$replace,$subject) All instances of $search are replaced with $replace in $subject. // Will print to screen: "Why is the sky blue?". echo str_replace("red","blue","Why is the...
Magento May 2017

Create a custom URL rewrite/redirect in Magento

You can use a custom rewrite to redirect CMS pages, or any other type of page. For example, if you change the URL key of the privacy...
Magento May 2017

Magento Code: Include currency switcher in the header or footer with Foundation mark-up

It is easy to set-up multi-currencies in Magento. This code  allows you to quickly include a currency drop down or link to  the header or...
Magento May 2017

Magento Code: Add a drop down attribute and display it on the product page in custom HTML

Magento makes it really easy to expand the usual product attributes through the Admin Panel. While these can be added to the product page in...
Magento March 2017

Magento header.phtml basic user account and basket code

Some useful shippets for including customer accound and a basic basket/cart product count in the header of Magento. This should be added to header.html in...
Magento January 2017

Magento Issue: Unable to sort configurable product attribute drop down options

Having encountered this issue a couple of times I though it was time to make a note. This is a fix for an issue in...

2016

WordPress Frontend December 2016

Testing YouTube embedded video responsiveness in WordPress

It turns out YouTube video uploads have come a long way since I last tried them out. This is a test post with no discernibly...
Magento December 2016

Magento product types and what to use them for

Magento comes preconfigured with a number of different product types. These range from simple bog-standard products to digital downloads and configurable products with a myriad...
Security December 2016

Anonymous Browsing

A few links to help secure your online activities private and secure. In the United Kingdom the Investigatory Powers Act has been signed into law...
WordPress November 2016

WordPress Code: Completely disable comments using functions.php

How to completely disable comments using functions.php The code below will completely disable any commenting and trackback features in WordPress. It is in response to the usual issue whereby you think comments...
Magento November 2016

MySQL TRUNCATE command: Quickly and easilty clear out the Magento database

This is a simple list of SQL commands which can be used to clear out various parts of the Magento database. It’ll be useful when...
Magento November 2016

Session Management and Validation Settings in Magento Configuration

Cookie and session management is an important aspect of any ecommerce store. Everything from a customer’s cart, checkout process and recently viewed products is made...
Magento SEO November 2016

All-in-one Google Analytics tracking in Magento

Simple single script to add Google’s conversion tracking to your Magento ecommerce website. The code should be added into the footer.phtml file within your current template....
Magento SEO November 2016

All-in-one Facebook Pixel Code for Magento ecommerce

Simple single script to add Facebook’s Pixel Code tracking to your Magento ecommerce website. The code should be added into the head.phtml file within your...
Magento SEO November 2016

Why you should be using Magento for your ecommerce website

There are many ecommerce platforms around, many offer a similar experience but time and time again Magento comes to the top of the list. Magento...
PHP October 2016

How to use PHP to submit a cURL request with HTTP Post data

Straight forward script to POST an array of fields to a given URL. // First, set the URL you want to POST the data to...
Magento October 2016

Getting your product information ready for importing to your website

Product imports are an inevitable part of any ecommerce project. At some point the information you have on your products wherever it may be stored...
SEO October 2016

You win Google: I’m Moving from keith.kg to keithgreer.dev

Google’s automatic identification of a website’s intended audience using the top level domains means my .kg domain name has been slowly sliding down the rankings in...
Magento SEO September 2016

Add Facebook Pixel Code to Magento Success Page

Update: Instead of this, try the All-in-one Facebook Pixel Code method. It’s easier to maintain. Facebook Pixel Code is a new and even more complicated...
Magento July 2016

Quickfix: Quickly add a new Magento CMS page template

Sometimes it’s necessary to quickly add a template for a page into the Magento content management system. This can be done via a custom extension...
Magento July 2016

Magento Code: Bulk add a new product attribute to all store attribute sets

This little script is an excellent time saver for adding a new attribute to all of the attribute sets configured in your Magento store. There are a few...
Magento April 2016

Magento Code: UK and Ireland counties for region drop-down in addresses

Full list of counties for the United Kingdom and Republic of Ireland. Run this SQL against your Magento database to replace the existing region text box...
Notes March 2016

Cloudflare: My next step for website optomisation

I’ve been working to dramatically reduce page load times on my site. Load times were reduced from 6 seconds to about 3 just by minifying...
Security March 2016

Why use an SSL?.. Number 3: Search Engine Optimisation

Series: Why use an SSL? Security · 2. Confidence · 3. SEO Google has, since 2014, been giving sites with a secure certificate installed a boost within their ranking algorithm....
Security March 2016

Why use an SSL?.. Number 2: User Confidence

Series: Why use an SSL? Security · 2. Confidence · 3. SEO As well as providing important security to your users the presence of an SSL certificate also enhances user...
Notes March 2016

I can get access to better internet in rural Mid Ulster than in North Belfast

I can get access to better internet in rural Mid Ulster (a townland called Tyanee just across the River Bann from the town of Portglenone) than on the...
Security March 2016

Why use an SSL?.. Number 1: Security

Series: Why use an SSL? Security · 2. Confidence · 3. SEO The main reason to use an SSL certificate on your website is to secure sensitive information sent across...
Magento February 2016

Magento Issue: One Page Checkout appearing to jump to the bottom of the page after address is entered

This is a recurring issue with Magento’s standard One Page Checkout. It most often occurs when the template has been updated to include lots of...
Notes February 2016

Useful .htaccess Rules: Setting the expires header for browser caching

Expires headers let the browser know whether to server a cached version of the page. This can simultaneously help to reduce server load and increase...
Notes February 2016

MySQL Database Backup and Restore via Command Line (Copy-and-pasteable)

Putting this together because I always end up checking online for the correct bash commands for Linux. These commands rely on your knowing for sure...
Magento February 2016

PayPal IPN notification errors with Magento

This one has popped up a few times in the past. When PayPal has been set-up and configured to with Magento the store owner receives...
WordPress February 2016

PHP: Use WordPress blog tags to find related posts

A simple script that can be used to pull related-type posts for a WordPress blog post. The related aspect is based on the fist tag...
Security January 2016

Google Chrome getting a new Security Panel for developers

Google is set to add a new Security Panel to the Chrome browser to help developers visualise and troubleshoot network connections. The security panel provides...
January 2016

PC Gaming Wins

2015

December 2015

Iceland 2015

A winter expedition around Iceland in December 2015 More posts on Instagram #IcelandMMXV View this post on Instagram #Iceland #IcelandMMXV #icebergs #glacier A post shared...
Magento December 2015

Magento 2.0: An introduction to what has changed

At long last Magento 2.0 has finally be released into the wild. These are a few of the reasons merchants and developers should consider moving...
Magento November 2015

M1 Get your Magento store ready for Black Friday

These are a few simple Magento 1 store configuration options that can help your store cope with increased traffic during Black Friday or any sort...
Notes November 2015

PHP Storm and making FTP connections with SSL (FTPS)

If you’re having issues connecting to a server via FTPS in phpStorm I found that the magic combination for PHP Storm and FTP-SSL connections is…...
Security November 2015

Web Application Security Testing

Free and open source web application security test tools. **Burp Suite ** Free and commercial tool. Excellent adjunct to manual testing and has a good...
Magento November 2015

Magento: Clear all caches through command line

When making certain changes to Magento, such as modifying source files, installing extensions, reverting changes, it is necessary to clear the cache in order for...
Notes September 2015

Steven says Slack messenger is awesome

My collegue Steven Cotterill at The Tomorrow Lab has outlined just how useful a messenger app can be in a development environment. At the beginning of...
WordPress August 2015

How to link to a PDF in WordPress

WordPress is designed to be simple and easy to use. Adding linking to a downloadable document is no different. Open a post or page and...
Magento July 2015

M1 Import Values to Dropdown/Multiple Select Attributes

This code is for Magento 1, it won’t work in Magento 2. Sometime when you need to deal with import of lots of values for...
Magento July 2015

M1 Batch updater for Magento Product SKUs

This is a Magento 1 script, it won’t work for Magento 2. The script will loop through a CSV file and update the SKU on...
PHP June 2015

Block access based on Client IP using PHP

This is a useful script to add at the start of any PHP file which you want hidden from a specific IP address or addresses....
Notes May 2015

Useful .gitattributes defaults for Beanstalk Git

Some useful copy-and-paste lines for the .gitattributes file when using Beanstalk Git. Image and other binary files Upload and store images as binary files, rather...
Magento SEO May 2015

Upgrading to Google’s Universal Analytics in Magento

The new Google Universal Analytics provides the opportunity for own measurement values and dimensions and allow you to track usage across platforms. Universal Analytics introduces a...
Magento May 2015

Add Google Analytics ecommerce:addTransaction to your Magento Store

A quick and way way to record transactions to Google Universal Analytics. First add this piece of PHP to your success page at the end...
Magento May 2015

Add Static Blocks to CMS Pages in Admin

Static Blocks are an easy way to include snippets of code or text on many pages throughout your Magento store. They can be used to...
Magento May 2015

Useful Excel Commands for Magento Image Import

Magento image import can be pretty flaky with case and spaces in the filename of images being uploaded. =CONCATENATE("/",SUBSTITUTE(LOWER(F2)," ","")) The above code will add...
Magento February 2015

Magento Issue: Subtotal and Grand Total prices double at Cart/Checkout stages

Have recently encountered an issue with prices in Magento Checkout appearing doubled. There are a number of solutions online which seem to (in various combinations)...

2014

Magento December 2014

Magento Development in Northern Ireland

Magento Developer I’ve been building Magento sites since 2009, from standard catalogue sites to bespoke custom built product generators. I’ve worked on a range of...
December 2014

€0.2: The EU Cookie Legislation

Are cookies dangerous? No, they are simply text files and are not (for example) viruses or Trojans. They cannot in themselves do anything to your computer;...