Skip to content

Recipe: character tracking

Public character pages, no player login required — admins import and keep the data fresh.

What you get

  • A canonical URL per imported character: /wow/character/{region}/{realm}/{name}.
  • Base stats (level, class, race, ilvl, achievement points) rendered out of the box.
  • Progressive enhancement from every extra module you enable: achievements strip, collection mosaic, etc.

Minimum modules

wow
wow_realm
wow_playable_class
wow_playable_race
wow_playable_specialization
wow_power_type
wow_character

All four reference-data modules are listed here because characters reference class, race, and specialization directly, and specialization entities reference power types. Skipping one means some character fields stay blank.

Setup

  1. Install the suite and configure Battle.net credentials.
  2. Sync reference data:
    drush wow:sync-realms --force
    drush wow:sync-classes --force
    drush wow:sync-races --force
    drush wow:sync-specializations --force
    drush wow:sync-power-types --force
    
  3. Import the characters you want to track:
    drush wow:character-lookup stormrage khadgar
    drush wow:character-lookup stormrage jaina
    
  4. Visit /wow/character/eu/stormrage/khadgar to confirm.

Adding progressive enhancements

Enable collection modules one at a time to decorate the character page:

drush en wow_achievement wow_mount wow_pet wow_title wow_toy wow_reputation -y
drush wow:sync-achi-categories
drush wow:sync-achievements
drush wow:sync-mounts
drush wow:sync-pets
drush wow:sync-titles
drush wow:sync-toys
drush wow:sync-reputation-factions

Each module's CharacterDataProvider kicks in automatically on the next character refresh. Re-run:

drush wow:character-lookup stormrage khadgar

The character page now shows the recent-achievements strip, collection counts, active title ribbon, etc.

Keeping data fresh

There is no built-in bulk-refresh drush command. For a small site (dozens of characters) you can schedule per-character lookups:

0 3 * * *  cd /path/to/site && drush wow:character-lookup stormrage khadgar

For a larger site, write a custom drush command (or module cron) that loops over stored characters and calls CharacterSync::refresh() — this is deliberately left to the operator so you can pick your own pacing and scope. Stale characters that never get refreshed are eventually deleted by the TTL sweeper.

What this recipe doesn't need

  • wow_battlenet_login — no Battle.net SSO
  • wow_user — no ownership mapping between Drupal users and characters
  • wow_guild — no guild pages

Add those later if the site grows in that direction. None of them are required for public character pages.

See also