Pageimage::isVariation() method

Given a file name (basename), return array of info if this is a variation for this instance’s file, or false if not.

Returned array includes the following indexes:

  • original (string): Original basename
  • url (string): URL to image
  • path (string): Full path + filename to image
  • width (int): Specified width in filename
  • height (int): Specified height in filename
  • actualWidth (int): Actual width when checked manually
  • actualHeight (int): Acual height when checked manually
  • crop (string): Cropping info string or blank if none
  • suffix (array): Array of suffixes

The following are only present if variation is based on another variation, and thus has a parent variation image between it and the original:

  • suffixAll (array): Contains all suffixes including among parent variations
  • parent (array): Variation info array of direct parent variation file

Usage

// basic usage
$bool = $pageimage->isVariation(string $basename);

// usage with all arguments
$bool = $pageimage->isVariation(string $basename, $options = []);

Arguments

NameType(s)Description
basenamestring

Filename to check (basename, which excludes path)

options (optional)array, bool

Array of options to modify behavior, or boolean to only specify allowSelf option.

  • allowSelf (bool): When true, it will return variation info even if same as current Pageimage. (default=false)
  • verbose (bool): Return verbose array of info? If false, just returns basename (string) or false. (default=true)

Return value

bool string array

Returns false if not a variation, or array (verbose) or string (non-verbose) of info if it is.


Hooking Pageimage::isVariation(…)

You can add your own hook events that are executed either before or after the Pageimage::isVariation(…) method is executed. Examples of both are included below. A good place for hook code such as this is in your /site/ready.php file.

Hooking before

The 'before' hooks are called immediately before each Pageimage::isVariation(…) method call is executed. This type of hook is especially useful for modifying arguments before they are sent to the method.

$this->addHookBefore('Pageimage::isVariation', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $Pageimage = $event->object;

  // Get values of arguments sent to hook (and optionally modify them)
  $basename = $event->arguments(0);
  $options = $event->arguments(1);

  /* Your code here, perhaps modifying arguments */

  // Populate back arguments (if you have modified them)
  $event->arguments(0, $basename);
  $event->arguments(1, $options);
});

Hooking after

The 'after' hooks are called immediately after each Pageimage::isVariation(…) method call is executed. This type of hook is especially useful for modifying the value that was returned by the method call.

$this->addHookAfter('Pageimage::isVariation', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $Pageimage = $event->object;

  // An 'after' hook can retrieve and/or modify the return value
  $return = $event->return;

  // Get values of arguments sent to hook (if needed)
  $basename = $event->arguments(0);
  $options = $event->arguments(1);

  /* Your code here, perhaps modifying the return value */

  // Populate back return value, if you have modified it
  $event->return = $return;
});

Pageimage methods and properties

API reference based on ProcessWire core version 3.0.168

Twitter updates

  • ProcessWire 3.0.171 dev branch core updates – More
    22 January 2021
  • Preliminary 2021 roadmap in progress in this week’s update— More
    8 January 2021
  • Happy New Year! Today I’ve bumped the version on the dev branch to 3.0.170, and it’s quite a lot of updates. This post covers most of them. In this post, there’s also a question for you: what would you like to see in ProcessWire in 2021? More
    1 January 2021

Latest news

  • ProcessWire Weekly #350
    In the 350th issue of ProcessWire Weekly we'll check out ProcessWire 3.0.171, highlight some recent forum threads and other ProcessWire resources, and introduce a brand new site of the week. Read on!
    Weekly.pw / 23 January 2021
  • ProcessWire 3.0.170 core updates
    Happy New Year! Today I’ve bumped the version on the dev branch to 3.0.170, and it’s quite a lot of updates. This post covers most of them. In this post, there’s also a question for you: what would you like to see in ProcessWire in 2021?
    Blog / 1 January 2021
  • Subscribe to weekly ProcessWire news

“We were really happy to build our new portfolio website on ProcessWire! We wanted something that gave us plenty of control on the back-end, without any bloat on the front end - just a nice, easy to access API for all our content that left us free to design and build however we liked.” —Castus, web design agency in Sheffield, UK