A Textformatter module for ProcessWire that converts text shortcuts into Font Awesome icons.
Features
- ✅ Converts shortcuts like
:fa-star:into Font Awesome icons - ✅ Flexible icon mapping configuration
- ✅ Support for Font Awesome 6+ (solid, regular, brands)
- ✅ Automatic asset loading from CDN
- ✅ HTML or SVG output
- ✅ Cache for improved performance
- ✅ Easy configuration from the ProcessWire admin
Installation
- Download or clone this module into
/site/modules/TextformatterFontAwesome/ - Go to Modules > Refresh in the ProcessWire admin
- Install the TextformatterFontAwesome module
- Configure icon mappings as needed
Configuration
Icon Mappings
Define your text shortcuts and their corresponding Font Awesome classes:
:fa-star: = fa-solid fa-star
:fa-heart: = fa-solid fa-heart
:fa-home: = fa-solid fa-house
:fa-user: = fa-solid fa-user
:fa-email: = fa-solid fa-envelope
:fa-facebook: = fa-brands fa-facebook
:fa-twitter: = fa-brands fa-twitterConfiguration Options
- Output Format: HTML (CSS) or SVG
- Load Assets: Automatically include Font Awesome from CDN
- CDN Version: Font Awesome version to load (default 6.5.1)
- Custom CSS: Optional URL for custom CSS
- Enable Cache: Cache mappings for improved performance
Usage
1. Apply to Fields
Go to Setup > Fields > select your text field and in the Details tab:
- Under Applied Textformatters, select Font Awesome Icons
- Save the field
2. Use in Templates
// The textformatter is automatically applied when rendering the field
echo $page->body; // Shortcuts like :fa-star: are converted automatically
// Or apply manually
$textformatter = $modules->get('TextformatterFontAwesome');
$text = "I like this page :fa-heart: It's great! :fa-star:";
$textformatter->format($text);
echo $text; // Output: I like this page <i></i> It's great! <i></i>3. Shortcut Examples
| Shortcut | Result | Description |
|---|---|---|
:fa-star: | <i></i> | Solid star |
:fa-heart: | <i></i> | Solid heart |
:fa-home: | <i></i> | Solid house |
:fa-facebook: | <i></i> | Facebook logo |
:fa-email: | <i></i> | Email envelope |
Content Usage Examples
In a Text Editor
Welcome to our site! :fa-star:
Contact us:
- Email: info@example.com :fa-email:
- Phone: +1234567890 :fa-phone:
Follow us on social media:
- Facebook :fa-facebook:
- Twitter :fa-twitter:
- Instagram :fa-instagram:
Thanks for visiting! :fa-heart:HTML Output
Welcome to our site! <i class="fa-solid fa-star"></i> Contact us: - Email: info@example.com <i class="fa-solid fa-envelope"></i> - Phone: +1234567890 <i class="fa-solid fa-phone"></i> Follow us on social media: - Facebook <i class="fa-brands fa-facebook"></i> - Twitter <i class="fa-brands fa-twitter"></i> - Instagram <i class="fa-brands fa-instagram"></i> Thanks for visiting! <i class="fa-solid fa-heart"></i>
Advanced Customization
Custom Mappings
You can create your own shortcuts:
:my-icon: = fa-solid fa-custom-icon
:company: = fa-solid fa-building
:product: = fa-solid fa-boxCustom CSS
If you use Font Awesome Pro or have custom icons:
.fa-custom-icon::before {
content: "\f123";
}Programmatic Usage
// Get the module
$fa = $modules->get('TextformatterFontAwesome');
// Format text
$content = "Text with icons :fa-star: and :fa-heart:";
$fa->format($content);
echo $content;
// Configure dynamically
$fa->set('outputFormat', 'svg');
$fa->set('loadAssets', false);Performance
- The module includes cache for parsed mappings
- Assets are loaded only when needed
- Smart detection of content with icons
Compatibility
- ProcessWire 3.0+
- Font Awesome 6.0+
- PHP 7.4+
Support
To report bugs or request features, visit: GitHub Issues
License
Mozilla Public License v2.0
Credits
Based on TextformatterEmoji by Ryan Cramer.
More modules by lexsanchez
Video or Social Post Embed
Enter a full YouTube, Vimeo, Instagram, Facebook, Twitter or Issuu URL by itself in any paragraph13VideoOrSocialPostEmbed by lexsanchez- Added 1 month ago by lexsanchez
Tracking Scripts
Manage and inject tracking scripts (Google Analytics, Google Ads, Facebook Pixel, custom) into site pages.3Added 1 month ago by lexsanchez
Install and use modules at your own risk. Always have a site and database backup before installing new modules.