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.137

Twitter updates

  • ProcessWire 3.0.146 on the dev branch contains about 22 commits with a combination of useful upgrades and issue report resolutions, more details in this forum post: More
    22 November 2019
  • ProcessWire 3.0.144 and 3.0.145 add improved field template context override settings and include a new Inputfields API, along with numerous other issue fixes, optimizations and improvements to the core. More
    8 November 2019
  • ProcessWire 3.0.144 core updates: Upgraded overrides section in the field editor, a new Inputfields JS API, and more— More
    1 November 2019

Latest news

  • ProcessWire Weekly #291
    In the 291st issue of ProcessWire Weekly we're going to take a closer look at the latest core updates, check out a brand new third party module called ProcessHelpVideos, and introduce a new site of the week. Read on!
    Weekly.pw / 8 December 2019
  • New User Activity module
    Blog / 29 November 2019
  • Subscribe to weekly ProcessWire news

“ProcessWire is like a breath of fresh air. So powerful yet simple to build with and customise, and web editors love it too.” —Margaret Chatwin, Web developer