Trying to create a custom PHP function within opencart. Basically I need to know if we are viewing the cart or checkout pages. I understand the simplest way to accomplish this is by accessing the route request param. I want to create a re-usable function however that is available site wide.
Is this possible? Where would it go?
The function looks something like this:
function isCheckout() {
    $route = $this->request->get['route'];
    //is cart?
    if($route == 'checkout/cart')
        return 'cart';
    $parts = explode('/', $route);
    if($parts[0] == 'checkout')
        return 'checkout';
    return false;
}
                Put your helper file inside a helper folder inside a system directory
system/helper/myhelper.php
and include it to
system/startup.php file 
like this
require_once(DIR_SYSTEM . 'helper/myhelper.php');
and you are done.
Put the function in a file eg. myhelper.php and save this to ../system/library/
Then add
require_once(DIR_SYSTEM . 'library/myhelper.php');
to ../system/startup.php
The correct and recommended way of doing this is using the OpenCart's built-in loader:
$this->load->helper('helper_name');
The helper is located in the directory system/helper. You don't need to append the php suffix when you load it, as OpenCart's loader engine appends it automatically.
And then, because the helper is not a class you use the functions directly without the $this. For example:
$this->load->helper('general');
token();
And the result will be a 32-character token. The token() function is located in the general helper in the system/helper directory.
This is an example of the general helper:
<?php
function token($length = 32) {
    // Create token to login with
    $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $token = '';
    for ($i = 0; $i < $length; $i++) {
        $token .= $string[mt_rand(0, strlen($string) - 1)];
    }   
    return $token;
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With