$modules API variable / Modules class

Loads and manages all modules in ProcessWire.

The $modules API variable is most commonly used for getting individual modules to use their API.

// Getting a module by name
$m = $modules->get('MarkupPagerNav');

// Getting a module by name (alternate)
$m = $modules->MarkupPagerNav;

Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the Modules class also inherits all the methods and properties of: WireArray and Wire.

Show $var?             Show args?        

Common

NameReturnSummary 
$modules->findByInfo($selector)
arrayFind modules by matching a property or properties in their module info 
$modules->findByPrefix(string $prefix)
arrayFind modules matching the given prefix (i.e. “Inputfield”) 
$modules->get($key)
Module _Module nullGet the requested Module 
$modules->getModule($key)
Module _Module null stringGet the requested Module (with options) 
$modules->getModuleFile($class)
bool stringGet the path + filename (or optionally URL) for this module 
$modules->getModuleInfo($class)
arrayReturns an associative array of information for a Module 
$modules->getModuleInfoProperty($class, string $property)
mixed nullGet just a single property of module info 
$modules->getModuleInfoVerbose($class)
arrayReturns a verbose array of information for a Module 
$modules->isInstalled(string $class)
boolIs the given module name installed? 
$modules->wired()
(nothing) 

Configuration

NameReturnSummary 
$modules->getConfig($class)
array string int floatGiven a module name, return an associative array of configuration data for it 
$modules->getModuleEditUrl($className)
stringReturn the URL where the module can be edited, configured or uninstalled 
$modules->isConfigurable($class)
bool string intIs the given module configurable? 
$modules->saveConfig($class, $data)
boolSave provided configuration data for the given module

Additional methods and properties

In addition to the methods and properties above, Modules also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.168

Twitter updates

  • There’s a new modules directory on the ProcessWire site now up and running. In this post we’ll cover a few details about what’s changed and what’s new—More
    20 November 2020
  • ProcessWire 3.0.168 core updates — More
    26 October 2020
  • This week a 2nd new module for processing Stripe payments has been added to FormBuilder. Unlike our other Stripe Inputfield, this new one supports 3D Secure (SCA) payments. We’ll take a closer look at it in this post, plus a live demo— More
    16 October 2020

Latest news

  • ProcessWire Weekly #341
    In the 341st issue of ProcessWire Weekly we're going to check out the latest processwire.com blog post, introduce upcoming commercial module called NiftyPasswordsPlus, and check out a brand new site of the week. Read on!
    Weekly.pw / 21 November 2020
  • New ProcessWire modules directory
    There’s a new modules directory on the ProcessWire site now up and running. In this post we’ll cover a few details about what’s changed and what’s new.
    Blog / 20 November 2020
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH