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 lexsanchezTracking Scripts
Manage and inject tracking scripts (Google Analytics, Google Ads, Facebook Pixel, custom) into site pages.3Added 1 week ago by lexsanchez- Added 1 week ago by lexsanchez
Install and use modules at your own risk. Always have a site and database backup before installing new modules.