Examples
Practical examples of using Meeting List Lite in different scenarios.
Basic Meeting Display
Using Custom JSON
For non-BMLT data sources:
1. Configure Plugin Settings
- Go to Settings → Meeting List Lite
- Set Data Source URL:
https://your-site.com/meetings.json - Save settings
2. Create a Page Create a new page called "Meetings" and add:
[tsml_ui]
3. Result Your meetings will display with search, filters, and maps (if coordinates are provided).
4. Optional: Enable Pretty URLs
For cleaner URLs like yoursite.com/meetings/some-meeting:
- In plugin settings, set Base Path:
meetings - Go to Settings → Permalinks and click Save Changes
Using BMLT
How to get started with a BMLT server:
1. Build your BMLT URL:
- Go to your BMLT server's semantic page:
https://your-bmlt-server.org/main_server/semantic - Select your filters (service body, days, etc.)
- Copy the generated URL and replace
/json/with/tsml/
2. Configure plugin:
- Go to Settings → Meeting List Lite
- Enter your BMLT TSML URL
- Save settings
3. Add shortcode:
[tsml_ui]
Example BMLT setup:
BMLT URL: https://latest.aws.bmlt.app/main_server/client_interface/tsml/?switcher=GetSearchResults&services=1006
BMLT Examples
Service Body Filtering
Show meetings from specific BMLT service bodies:
Single Service Body:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&services=1006"]
Multiple Service Bodies:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&services=1006,1007,1008"]
Different Areas on Different Pages:
Page 1: Brooklyn Area
[tsml_ui data_src="https://latest.aws.bmlt.app/main_server/client_interface/tsml/?switcher=GetSearchResults&services=1006"]
Page 2: Manhattan Area
[tsml_ui data_src="https://latest.aws.bmlt.app/main_server/client_interface/tsml/?switcher=GetSearchResults&services=1007"]
BMLT Format Filtering
Open Meetings Only:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&formats=17"]
Step Study Meetings:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&formats=54"]
Online Meetings:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&formats=VM"]
BMLT Time-Based Filtering
Evening Meetings (after 6 PM):
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&StartsAfterH=18"]
Weekday Meetings Only:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&weekdays=1,2,3,4,5"]
Weekend Meetings:
[tsml_ui data_src="https://your-bmlt.org/main_server/client_interface/tsml/?switcher=GetSearchResults&weekdays=0,6"]
Multiple Meeting Lists
Display different meeting lists on different pages:
Area-Specific Meetings
Page 1: Downtown Meetings
[tsml_ui data_src="https://api.example.com/downtown-meetings.json"]
Page 2: Suburban Meetings
[tsml_ui data_src="https://api.example.com/suburban-meetings.json"]
Format-Specific Meetings
Page 1: In-Person Meetings
[tsml_ui data_src="https://api.example.com/in-person-meetings.json"]
Page 2: Online Meetings
[tsml_ui data_src="https://api.example.com/online-meetings.json"]
Google Sheets Integration
Two methods available:
Method 1: Direct Connection (Real-time)
Best for: Small sites, need real-time updates
Setup:
- Get a Google Sheets API key
- Use your sheet URL directly:
[tsml_ui data_src="https://docs.google.com/spreadsheets/d/12Ga8uwMG4WJ8pZ_SEU7vNETp_aQZ-2yNVsYDFqIwHyE/edit#gid=0" google_key="YOUR_GOOGLE_API_KEY"]
With global settings:
- Settings → Meeting List Lite
- Data Source URL:
https://docs.google.com/spreadsheets/d/12Ga8uwMG4WJ8pZ_SEU7vNETp_aQZ-2yNVsYDFqIwHyE/edit#gid=0 - Google API Key:
YOUR_GOOGLE_API_KEY - Then use:
[tsml_ui]
Method 2: Sheet Importer (Recommended)
Best for: Most users, better reliability
Setup:
- Copy San Jose's template sheet
- Fill in your data
- Make sheet public ("Anyone with the link" → "Viewer")
- Go to Google Sheets Importer
- Paste your sheet URL and click Import
- Use the generated JSON URL:
[tsml_ui data_src="https://sheets.code4recovery.org/storage/12Ga8uwMG4WJ8pZ_SEU7vNETp_aQZ-2yNVsYDFqIwHyE.json"]
Remember: Bookmark the importer result page to easily refresh your feed when you update the sheet.
URL Routing Examples
Hash Routing (Default)
Standard implementation with hash-based URLs:
Setup:
[tsml_ui]
URL Examples:
- Main page:
https://yoursite.com/meetings/ - Meeting detail:
https://yoursite.com/meetings/#/some-meeting - Search results:
https://yoursite.com/meetings/#/?search=meditation
Pretty URLs
Clean, SEO-friendly URLs:
Setup:
- Settings → Meeting List Lite → Base Path:
meetings - Settings → Permalinks → Save Changes
- Add shortcode:
[tsml_ui]
URL Examples:
- Main page:
https://yoursite.com/meetings/ - Meeting detail:
https://yoursite.com/meetings/some-meeting - Search results:
https://yoursite.com/meetings/?search=meditation
Multiple Meeting Pages with Pretty URLs
Page 1: "Meetings" (slug: meetings)
- Base Path:
meetings - URLs:
yoursite.com/meetings/meeting-name
Page 2: "Online Meetings" (slug: online-meetings)
- Base Path:
online-meetings - URLs:
yoursite.com/online-meetings/meeting-name
Important: Each page with pretty URLs needs its own Base Path setting. You can only have one active Base Path at a time, so this approach works best when you have one primary meeting directory.
Timezone Examples
Different Timezones for Different Pages
East Coast Meetings:
[tsml_ui data_src="https://east.example.com/meetings.json" timezone="America/New_York"]
West Coast Meetings:
[tsml_ui data_src="https://west.example.com/meetings.json" timezone="America/Los_Angeles"]
International Meetings:
[tsml_ui data_src="https://uk.example.com/meetings.json" timezone="Europe/London"]
Custom Styling Examples
Basic Styling
Add to your theme's CSS or plugin settings:
.meetinglistlite-fullwidth {
background: #f8f9fa;
padding: 30px;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
#tsml-ui {
font-family: 'Georgia', serif;
}
Meeting Card Styling
.tsml-meeting {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-radius: 15px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
}
.tsml-meeting-name {
font-size: 1.3em;
font-weight: bold;
margin-bottom: 10px;
}
Dark Theme
.dark-theme .meetinglistlite-fullwidth {
background: #2d3748;
color: #e2e8f0;
}
.dark-theme .tsml-meeting {
background: #4a5568;
border: 1px solid #718096;
}
.dark-theme .tsml-search input {
background: #4a5568;
color: #e2e8f0;
border: 1px solid #718096;
}
Data Format Examples
Complete Meeting Example
[
{
"name": "Morning Meditation Group",
"day": 1,
"time": "07:00",
"location": "Community Center",
"address": "123 Main St, Anytown, ST 12345",
"latitude": 40.7128,
"longitude": -74.0060,
"region": "Downtown",
"types": ["M", "TC", "O"],
"notes": "Enter through side door. Coffee available.",
"conference_url": "",
"conference_phone": ""
}
]
Online Meeting Example
[
{
"name": "Online Recovery Meeting",
"day": 2,
"time": "19:00",
"location": "Zoom Meeting",
"address": "",
"latitude": null,
"longitude": null,
"region": "Online",
"types": ["O", "ONL"],
"notes": "Meeting ID: 123-456-789, Password: recovery",
"conference_url": "https://zoom.us/j/123456789?pwd=abc123",
"conference_phone": "+1-646-558-8656"
}
]
Hybrid Meeting Example
[
{
"name": "Hybrid Support Group",
"day": 3,
"time": "18:30",
"location": "Unity Church",
"address": "456 Oak Ave, Somewhere, ST 54321",
"latitude": 41.8781,
"longitude": -87.6298,
"region": "North Side",
"types": ["O", "HY"],
"notes": "In-person and online. Zoom link in description.",
"conference_url": "https://us02web.zoom.us/j/987654321",
"conference_phone": "+1-312-626-6799"
}
]
Widget Implementation
Sidebar Widget
Add to your theme's sidebar:
- Go to Appearance → Widgets
- Add a Text widget
- Enter title: "Meetings"
- Add content:
<div style="max-height: 400px; overflow-y: auto;">
[tsml_ui data_src="https://example.com/meetings.json"]
</div>
Footer Widget
<h3>Find a Meeting</h3>
[tsml_ui data_src="https://example.com/meetings.json"]
Advanced Customization
Custom TSML UI Configuration
Hide certain meeting types and customize strings:
In plugin settings, TSML UI Configuration:
{
"strings": {
"en": {
"search": "Find meetings...",
"type_descriptions": {
"C": null,
"TC": "Temporarily Closed"
}
}
},
"hide": ["C"],
"theme": {
"primary_color": "#007cba"
}
}
Meeting Type Filtering
Show only specific meeting types by filtering your data source, or use custom JSON configuration.
Performance Examples
Cached JSON Endpoint
Set up your data source with caching headers:
Cache-Control: public, max-age=3600
CDN Implementation
[tsml_ui data_src="https://cdn.example.com/meetings.json"]
Compressed Data
Ensure your server sends compressed JSON:
Content-Encoding: gzip
Troubleshooting Examples
Debug Mode
Add to any page to see debug information:
[tsml_ui data_src="https://example.com/meetings.json"]?debug=1
CORS Testing
Test your data source directly:
curl -H "Origin: https://yourwordpresssite.com" \
-H "Access-Control-Request-Method: GET" \
https://your-data-source.com/meetings.json
JSON Validation
Validate your JSON format:
- Copy your JSON data
- Visit JSONLint
- Paste and validate
Integration Examples
With Membership Plugins
For restricted content, ensure your data source is accessible:
// In your theme's functions.php
add_action('wp', function() {
if (is_user_logged_in()) {
// Show members-only meetings
add_filter('meetinglistlite_data_src', function() {
return 'https://members.example.com/meetings.json';
});
}
});
With Multilingual Plugins
Different data sources for different languages:
// WPML integration example
add_filter('meetinglistlite_data_src', function($url) {
$lang = ICL_LANGUAGE_CODE;
return "https://api.example.com/{$lang}/meetings.json";
});
Testing Your Setup
Basic Test Checklist
- ✅ Plugin activated
- ✅ Data source URL configured
- ✅ WordPress timezone set correctly
- ✅ Shortcode added to page
- ✅ Meetings display without errors
- ✅ Search and filters work
- ✅ Maps display (if coordinates provided)
Advanced Testing
- Check browser console for JavaScript errors
- Verify data source returns valid JSON
- Test on mobile devices
- Check loading performance
- Verify GDPR compliance (if applicable)
These examples should help you implement Meeting List Lite in various scenarios. For more specific use cases, consult the FAQ or create a support topic.