Although I am soliciting ways to accomplish these things now, this is more of a feature request, as I'm fairly certain from other posts that high quality metadata for CiviCRM output has not been a development priority yet.
To enhance CiviCRM's usefulness and adoption (and perhaps therefore the number of developers) the following features would be ideal:
- Render proper meta descriptions specific to each page
- Render proper Open Graph meta tags for each page
- Render proper Twitter Card meta tags for each page
- Create a field to identify a primary image to be used by the above tags, which will be necessary for:
- Each event info page and registration page
- The event listing page
- Each contribution page
- Any other public-facing landing pages
- Properly implement SEO URL routing in Joomla (and Drupal and WordPress)
- Render proper canonical URL link tag for each page
Some of the functionality for #2 and #3 could be hacked in using the CRM_Utils_System::addHTMLHead method, however the meta descriptions (#1) can't be updated this way because they've already been sent by the CMS. We'd need something like the CRM_Utils_System::setTitle method to override it.
I've hacked a solution for #5 and #6 by altering /CRM/Utils/System/Joomla.php to write pretty URLs and setting up .htaccess to untangle it back into the messy Joomla/CiviCRM hybrid URL, which itself seems to be a hack because it doesn't conform to the CMS's MVC method, which creates other problems (bugs) where Joomla doesn't properly understand which menu Itemid is supposed to be active.
To the dev team: Thank you for all your fantastic work on CiviCRM 4.7! It keeps getting better every time. I hope these enhancements will make CiviCRM even more viable for more organizations.