Sometimes, with Kunena 3.0.8, if i put an image/video before text in the messagge, meta description is truncated to a few characters.
So in: components / com_kunena / views / topic / view.html.php
I've changed:
Code:
protected function _prepareDocument($type){
if ($type=='default'){
$this->headerText = JText::_('COM_KUNENA_MENU_LATEST_DESC');
$this->title = JText::_('COM_KUNENA_ALL_DISCUSSIONS');
$page = intval ( $this->state->get('list.start') / $this->state->get('list.limit') ) + 1;
$pages = intval ( ($this->total-1) / $this->state->get('list.limit') ) + 1;
$titleClean = preg_replace("/[\"]/", "", $this->topic->subject);
$title = JText::sprintf($titleClean) . " | Page {$page}";
$this->setTitle($title);
// TODO: use real keywords, too
$keywords = $this->escape ( "{$this->topic->subject}, {$this->category->name}, {$this->category->getParent()->name}, {$this->config->board_title}" );
$keywordsClean = preg_replace("/&#?[a-z0-9]+;/i","",$keywords);
$this->setKeywords ( $keywordsClean );
// Create Meta Description form the content of the first message
// better for search results display but NOT for search ranking!
$description = KunenaHtmlParser::stripBBCode($this->topic->first_post_message, 182);
$description = preg_replace('/\s+/', ' ', $description); // remove newlines
$description = trim($description); // Remove trailing spaces and beginning
$description = preg_replace('|[[\/\!]*?[^\[\]]*?]|si', '', $description); // remove BBCode
$subjectClean = preg_replace("/[\"]/", "", $this->topic->subject);
if (strlen($subjectClean) <= 79 ) {
$keystrim = $subjectClean.".".' '. $this->category->name .', '.$this->category->getParent()->name.'.';
} else {
$keystrim = substr($subjectClean, 0, 80)."...".' '.$this->category->name.', '.$this->category->getParent()->name.'.';
}
$keysdesc = 'Page '.$page.' | '.$keystrim;
// if ($page) {
// $description .= " ({$page}/{$pages})"; //avoid the "duplicate meta description" error in google webmaster tools
// }
$this->setDescription ( $keysdesc );
With this, i clean character and add | Page to meta title:
Code:
$titleClean = preg_replace("/[\"]/", "", $this->topic->subject);
$title = JText::sprintf($titleClean) . " | Page {$page}";
$this->setTitle($title);
With this, i clean Keywords:
Code:
$keywords = $this->escape ( "{$this->topic->subject}, {$this->category->name}, {$this->category->getParent()->name}, {$this->config->board_title}" );
$keywordsClean = preg_replace("/&#?[a-z0-9]+;/i","",$keywords);
$this->setKeywords ( $keywordsClean );
With this, i clean Description, strip BBCode and i control the length of the title for add ... if it's too long (Fixed 80 characters) and i add Categories.
Code:
// Create Meta Description form the content of the first message
// better for search results display but NOT for search ranking!
$description = KunenaHtmlParser::stripBBCode($this->topic->first_post_message, 182);
$description = preg_replace('/\s+/', ' ', $description); // remove newlines
$description = trim($description); // Remove trailing spaces and beginning
$description = preg_replace('|[[\/\!]*?[^\[\]]*?]|si', '', $description); // remove BBCode
$subjectClean = preg_replace("/[\"]/", "", $this->topic->subject);
if (strlen($subjectClean) <= 79 ) {
$keystrim = $subjectClean.".".' '. $this->category->name .', '.$this->category->getParent()->name.'.';
} else {
$keystrim = substr($subjectClean, 0, 80)."...".' '.$this->category->name.', '.$this->category->getParent()->name.'.';
}
$keysdesc = 'Page '.$page.' | '.$keystrim;
// if ($page) {
// $description .= " ({$page}/{$pages})"; //avoid the "duplicate meta description" error in google webmaster tools
// }
$this->setDescription ( $keysdesc );
The result is:
Meta Title: Forum: Change configuration of Meta Title, Keywords and Description | Page 1
Meta Description: Page 1 | Change configuration of Meta Title, Keywords and Description. The Kunena Project, Kunena 4.0 Feature Requests.
What do you think ?!?