Viele User benutzen in Joomla 2.5 das beliebte Extravote Plugin um Ihren Usern das Bewerten von Artikeln zu ermöglichen. Den Status der Bewertung zeigt Extravote mit schicken 5 Sternen an ähnlich wie das Google auf den Suchergebnisseiten macht. Ein Beispiel für die Sternebewertung könnt Ihr euch auf dieser Webseite anschauen. Dort wird Extravote in einem Modul ausgeführt und ist daher nicht nur in Artikeln sondern auf jeder Seite einsetzbar.

Leider gibt das Plugin im Originalzustand keine Microdaten (Rich Snippets) auf der eigenen Webseite aus die es Google ermöglichen würden die Bewertung des Artikels in den Suchergebnissen anzuzeigen.

 

Nachdem ich mich bei Google erstmal über die Zusammenhänge und Vorraussetzungen für Microdaten schlau gemacht habe war es dann nicht mehr so schwer die benötigten Änderungen am Code durchzuführen.

 

Die Funktion welche die Sterne generiert nennt sich protected function plgContentExtraVoteStars.

 

Öffnet die Datei

 

1
/plugins/content/extravote/extravote.php

und sucht die entsprechende Zeile. Ersetzt die gesamte Funktion mit dem folgenden Code:

 

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
protected function plgContentExtraVoteStars( $id, $rating_sum, $rating_count, $xid )
	{
		$document = JFactory::getDocument();
 
	 	if ( $this->params->get('css', 1) ) :
			$document->addStyleSheet(JURI::root(true).'/plugins/content/extravote/assets/extravote.css');
		endif;
 
		$document->addScript(JURI::root(true).'/plugins/content/extravote/assets/extravote.js');
 
     	global $plgContentExtraVoteAddScript;
 
		$show_counter = $this->params->get('show_counter',1);
		$show_rating  = $this->params->get('show_rating',1);
		$rating_mode  = $this->params->get('rating_mode', 1);
		$show_unrated = $this->params->get('show_unrated',1);
		$rating  = 0;
 
	 	if(!$plgContentExtraVoteAddScript){
         	$document->addScriptDeclaration("
				var ev_basefolder = '".JURI::base(true)."';
				var extravote_text=Array('".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_NO_AJAX')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOADING')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_THANKS')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOGIN')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_RATED')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE')."','".
					JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_RATING').
				"');
			");
     		$plgContentExtraVoteAddScript = 1;
	 	}
 
		if( $rating_count!=0 ) {
			$rating  = ($rating_sum / intval( $rating_count ));
		} elseif( $show_unrated == 0 ) {
			$show_counter = -1;
			$show_rating  = -1;
		}
 
		$container = 'div';
		$class     = 'extravote-small';
 
		if( (int)$xid ) {
			if ( $show_counter == 2 ) $show_counter = 0;
			if ( $show_rating == 2 ) $show_rating = 0;
			$container = 'span';
			$class     = 'extravote-small';
		} else {
			if ( $show_counter == 3 ) $show_counter = 0;
			if ( $show_rating == 3 ) $show_rating = 0;
		}
 
		$stars = $this->params->get('stars',10);
		$spans = '';
 
		for ($i=0,$j=5/$stars; $i<$stars; $i++,$j+=5/$stars) :
			$spans .= "
      <span class="\&quot;extravote-star\&quot;"><a class="\&quot;ev-&quot;.($j*10).&quot;-stars\&quot;" title="\&quot;&quot;.JTEXT::_('PLG_CONTENT_EXTRAVOTE_RATING_'.($j*10).'_OUT_OF_5').&quot;\&quot;" onclick="\&quot;javascript:JVXVote(&quot;.$id.&quot;,&quot;.$j.&quot;,&quot;.$rating_sum.&quot;,&quot;.$rating_count.&quot;,'&quot;.$xid.&quot;',&quot;.$show_counter.&quot;,&quot;.$show_rating.&quot;,&quot;.$rating_mode.&quot;);\&quot;" href="\">1</a></span>";
		endfor;
 
	 	$html = "
&lt;".$container." class=\"".$class."\"&gt;
<span class="\&quot;extravote-stars\&quot;">
    "
	.$spans."
  </span>
<div id="\&quot;extravote_&quot;.$id.&quot;_&quot;.$xid.&quot;\&quot;" class="\&quot;extravote-info\&quot;">";
 
  		if ( $show_rating &gt; 0 ) {
			if ( $rating_mode == 0 ) {
				$rating = round($rating*20) . '%';
			} else {
				$rating = number_format($rating,2);
			}
			$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_RATING', '<span><span>'.$rating.'</span>');
		}
 
  		if ( $show_counter &gt; 0 ) {
			if($rating_count!=1) {
				$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES', '<span>'.$rating_count.'</span>');
			} else {
				$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE', '<span>'.$rating_count.'</span>');
			}
		}
 
 	 	$html .="</span></div>
";
 	 	$html .="
<!--".$container."-->";
 
	 	return $html;
 	}

Das war es dann auch schon in Zukunft generiert das Plugin auch Bewertungs-Microdaten auf eurer Webseite. Überprüfen könnt Ihr das mit dem Google Test-Tool für strukturierte Daten dort sollten nun die Sterne im Suchergebnis erscheinen.

 

Freundliche Grüsse
Jan

Bookmarke diese Seite bei: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können. Linkarena del.icio.us Digg Y!GG Webnews Technorati StumbleUpon Google Bookmarks Facebook TwitThis