+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Rating - Darstellung verbessern - wie?

  1. #1
    Kommt häufiger vorbei
    Registriert seit
    19.04.2005
    Beiträge
    417
    Bedankte sich
    0
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard Rating - Darstellung verbessern - wie?

    Hallo,

    Achtung:
    - erst folgt ein kurzer Hinweis auf das, was ich getan habe
    - dann folgt die Frage. In Kürze: ich möchte, dass sich die Bewertung eines Beitrages auf der Frontpage besser in das Layout einfügt.

    ich habe Mambo 4.5.2 installiert und das rating aktiviert.
    Zunächst fiel mir auf, dass um die Bewertungs-Grafik auf der Frontpage ein Riesenabstand klaffte. Das liegt daran, dass der mambot (mosvote.php) da generell ein "<Form>" erzeugt.

    Ich habe nun den mosvote.php aufgebohrt in zwei getrennte Funktionen:
    1.) eine Funktion um die Bewertung des Berichtes OBEN anzuzeigen und dabei möglichst keinen Platz zu verbraten
    2.) eine weitere Funktion um das Bewerten eines Beitrages am ENDE des Beitrages zu ermöglichen.

    Das sieht jetzt so aus:
    Code:
    <?php
    /**
    * @version $Id: mosvote.php,v 1.5 2005/01/06 01:13:30 eddieajau Exp $
    * @package Mambo
    * @copyright (C) 2000 - 2005 Miro International Pty Ltd
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    * Mambo is Free Software
    */
    
    /** ensure this file is being included by a parent file */
    defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
    
    $_MAMBOTS->registerFunction( 'onBeforeDisplayContent', 'botVotingTop' );
    $_MAMBOTS->registerFunction( 'onAfterDisplayContent', 'botVotingBottom' );
    
    function botVotingTop( &$row, &$params, $page=0 ) {
    	global $mosConfig_live_site, $mosConfig_absolute_path, $cur_template;
    	global $Itemid;
    	$id = $row->id;
    	$option = 'com_content';
    	$task = mosGetParam( $_REQUEST, 'task', '' );
    
    	$html = '';
    	if ($params->get( 'rating' ) && !$params->get( 'popup' )){
    		//$html .= '<form method="post" action="' . sefRelToAbs( 'index.php' ) . '">';
    		$img = '';
    		
    		// look for images in template if available
    		$starImageOn = mosAdminMenus::ImageCheck( 'rating_star.png', '/images/M_images/' );
    		$starImageOff = mosAdminMenus::ImageCheck( 'rating_star_blank.png', '/images/M_images/' );
    
    		for ($i=0; $i < $row->rating; $i++) {
    			$img .= $starImageOn;
    		}
    		for ($i=$row->rating; $i < 5; $i++) {
    			$img .= $starImageOff;
    		}
    		$html .= '<span class="content_rating">';
    		$html .= _USER_RATING . ':' . $img . '&nbsp;/&nbsp;';
    		$html .= intval( $row->rating_count );
    		//$html .= "</span>\n<br />\n";
    		$html .= "</span>\n";
    		
    		
    		//$html .= "</form>\n";
    	}
    	return $html;
    }
    
    function botVotingBottom( &$row, &$params, $page=0 ) {
    	global $mosConfig_live_site, $mosConfig_absolute_path, $cur_template;
    	global $Itemid;
    	$id = $row->id;
    	$option = 'com_content';
    	$task = mosGetParam( $_REQUEST, 'task', '' );
    
    	$html = '';
    	if ($params->get( 'rating' ) && !$params->get( 'popup' )){
    		$html .= '<form method="post" action="' . sefRelToAbs( 'index.php' ) . '">';
    		$img = '';
    		
    		// look for images in template if available
    		$starImageOn = mosAdminMenus::ImageCheck( 'rating_star.png', '/images/M_images/' );
    		$starImageOff = mosAdminMenus::ImageCheck( 'rating_star_blank.png', '/images/M_images/' );
    
    		$url = @$_SERVER['REQUEST_URI'];
    		$url = ampReplace( $url );
    		
    		if (!$params->get( 'intro_only' ) && $task != "blogsection") {
    			$html .= '<span class="content_vote">';
    			$html .= _VOTE_POOR;
    			$html .= '<input type="radio" alt="vote 1 star" name="user_rating" value="1" />';
    			$html .= '<input type="radio" alt="vote 2 star" name="user_rating" value="2" />';
    			$html .= '<input type="radio" alt="vote 3 star" name="user_rating" value="3" />';
    			$html .= '<input type="radio" alt="vote 4 star" name="user_rating" value="4" />';
    			$html .= '<input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />';
    			$html .= _VOTE_BEST;
    			$html .= '&nbsp;<input class="button" type="submit" name="submit_vote" value="'. _RATE_BUTTON .'" />';
    			$html .= '<input type="hidden" name="task" value="vote" />';
    			$html .= '<input type="hidden" name="pop" value="0" />';
    			$html .= '<input type="hidden" name="option" value="com_content" />';
    			$html .= '<input type="hidden" name="Itemid" value="'. $Itemid .'" />';
    			$html .= '<input type="hidden" name="cid" value="'. $id .'" />';
    			$html .= '<input type="hidden" name="url" value="'. $url .'" />';
    			$html .= '</span>';
    		}
    		$html .= "</form>\n";
    	}
    	return $html;
    }
    
    ?>
    Nun sieht das auf der Frontpage auch schon viel besser aus.
    ABER:
    1.) kann ich über das templace_css.css nicht die Hintergrundfarbe für die Voting-Zeile so einfärben, dass sie die komplette Breite nutzt

    2.) Unter dem Voting ist ein ganz schmaler Rand (1 Pixel schätze ich). Wie bekomme ich den weg?

    so sieht das in meinem template_css aus:
    Code:
    /* Content voting */
    .content_rating {
    	background-color: #FEFAEC;
    	font-weight: normal;
    	font-size: 8pt;
    	width: 100%;
    }
    
    .content_vote {
    	background-color: #FEFAEC;
    	font-weight: normal;
    	font-size: 8pt;
    	width: 100%;
    }
    Das width: 100% hat NULL Auswirkung :(

    Wer hat noch Ideen oder gar eine Lösung?

  2. #2
    Kommt häufiger vorbei
    Registriert seit
    19.04.2005
    Beiträge
    417
    Bedankte sich
    0
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Hm - man sollte natürlich auch eine Tabelle benutzen wenn man mit width spielen möchte
    Sorry

    Also für alle die es interessiert - die Lösung sieht jetzt so aus:
    - Das rating des Artikels steht jetzt immer oben; nimmt aber nicht mehr Platz weg als unbedingt nötig und kann (hintergrundfarbe/breite/...) über das css formatiert werden
    - das Voting steht jetzt immer unten (nicht auf der Frontpage ) und auf der Frontpage nimmt es jetzt auch NULL Platz weg.

    hier die modifizierte mosvote.php
    Code:
    <?php
    /**
    * @version $Id: mosvote.php,v 1.5 2005/01/06 01:13:30 eddieajau Exp $
    * @package Mambo
    * @copyright (C) 2000 - 2005 Miro International Pty Ltd
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    * Mambo is Free Software
    */
    
    /**
    * Sept. 4. 2005: This one is modified by Boris Nienke (http://www.nsonic-net.de)
    * Changes are:
    * 1.) splitted in two functions to be able to show rating and voting at different places
    * 2.) show rating at the top; voting at the bottom
    * 3.) don't waste space on the frontpage for the rating. Instead using a table (can be formated with class "content_rating")
    * Now it's possible to have the rating on the frontpage with the same background-color as the content with the same width as
    * the content table etc. No space wasted because no "<form>" is used on frontpage for displaying the rating.
    */
    
    /** ensure this file is being included by a parent file */
    defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
    
    $_MAMBOTS->registerFunction( 'onBeforeDisplayContent', 'botVotingTop' );
    $_MAMBOTS->registerFunction( 'onAfterDisplayContent', 'botVotingBottom' );
    
    function botVotingTop( &$row, &$params, $page=0 ) {
    	global $mosConfig_live_site, $mosConfig_absolute_path, $cur_template;
    	global $Itemid;
    	$id = $row->id;
    	$option = 'com_content';
    	$task = mosGetParam( $_REQUEST, 'task', '' );
    
    	$html = '';
    	if ($params->get( 'rating' ) && !$params->get( 'popup' )){
    		//$html .= '<form method="post" action="' . sefRelToAbs( 'index.php' ) . '">';
    		$img = '';
    		
    		// look for images in template if available
    		$starImageOn = mosAdminMenus::ImageCheck( 'rating_star.png', '/images/M_images/' );
    		$starImageOff = mosAdminMenus::ImageCheck( 'rating_star_blank.png', '/images/M_images/' );
    
    		for ($i=0; $i < $row->rating; $i++) {
    			$img .= $starImageOn;
    		}
    		for ($i=$row->rating; $i < 5; $i++) {
    			$img .= $starImageOff;
    		}
    		$html .= '<span class="content_rating">';
    		
    		$html .= '<table width="100%"  cellpadding="0" cellspacing="0"><tr><td class="content_rating">';
    		
    		$html .= _USER_RATING . ':' . $img . '&nbsp;/&nbsp;';
    		$html .= intval( $row->rating_count );
    		//$html .= "</span>\n<br />\n";
    
    		$html .= '</td></tr></table>';
    
    		$html .= "</span>\n";
    		
    		
    		//$html .= "</form>\n";
    	}
    	return $html;
    }
    
    function botVotingBottom( &$row, &$params, $page=0 ) {
    	global $mosConfig_live_site, $mosConfig_absolute_path, $cur_template;
    	global $Itemid;
    	$id = $row->id;
    	$option = 'com_content';
    	$task = mosGetParam( $_REQUEST, 'task', '' );
    
    	$html = '';
    	if ($params->get( 'rating' ) && !$params->get( 'popup' )){
    		
    		if (!$params->get( 'intro_only' ) && $task != "blogsection") {
                		$html .= '<form method="post" action="' . sefRelToAbs( 'index.php' ) . '">';
                		$img = '';
                		
                		// look for images in template if available
                		$starImageOn = mosAdminMenus::ImageCheck( 'rating_star.png', '/images/M_images/' );
                		$starImageOff = mosAdminMenus::ImageCheck( 'rating_star_blank.png', '/images/M_images/' );
                
                		$url = @$_SERVER['REQUEST_URI'];
                		$url = ampReplace( $url );
    
    			$html .= '<span class="content_vote">';
    			$html .= _VOTE_POOR;
    			$html .= '<input type="radio" alt="vote 1 star" name="user_rating" value="1" />';
    			$html .= '<input type="radio" alt="vote 2 star" name="user_rating" value="2" />';
    			$html .= '<input type="radio" alt="vote 3 star" name="user_rating" value="3" />';
    			$html .= '<input type="radio" alt="vote 4 star" name="user_rating" value="4" />';
    			$html .= '<input type="radio" alt="vote 5 star" name="user_rating" value="5" checked="checked" />';
    			$html .= _VOTE_BEST;
    			$html .= '&nbsp;<input class="button" type="submit" name="submit_vote" value="'. _RATE_BUTTON .'" />';
    			$html .= '<input type="hidden" name="task" value="vote" />';
    			$html .= '<input type="hidden" name="pop" value="0" />';
    			$html .= '<input type="hidden" name="option" value="com_content" />';
    			$html .= '<input type="hidden" name="Itemid" value="'. $Itemid .'" />';
    			$html .= '<input type="hidden" name="cid" value="'. $id .'" />';
    			$html .= '<input type="hidden" name="url" value="'. $url .'" />';
    			$html .= '</span>';
    		}
    		$html .= "</form>\n";
    	}
    	return $html;
    }
    
    ?>
    Die Einträge im css sehen so aus
    Code:
    /* Content voting */
    .content_rating {
    	background-color: #FEFAEC;
    	font-weight: normal;
    	font-size: 8pt;
    	
    	width: 100%;
    }
    
    .content_vote {
    	background-color: #FEFAEC;
    	font-weight: normal;
    	font-size: 8pt;
    	width: 100%;
    }
    Vielleicht hilft das ja noch jemanden - mich wundert es, dass dieses "verkrüppelte" Layout auf der Frontpage durch die Rating-Grafik offenbar sonst noch nicht angemeckert wurde? Ich habe jedenfalls sonst keine Lösungen hier gefunden

  3. #3
    Kommt häufiger vorbei
    Registriert seit
    19.04.2005
    Beiträge
    417
    Bedankte sich
    0
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Oops - ich sehe, das war nicht aktuelle Source stand.
    Einfach in der "After..."-Function auch noch nach dem "<span>" eine "<table>...." starten (mit einem style-sheet wenn man möchte) und vor dem "</span>" die Tabelle wieder schließen (wie ich es auch in der "Before..."-Function getan habe.

    Im Anhang mal Screen-Shots wie es jetzt auf der Frontpage aussehen kann (keine störenden Abstände/Ränder mehr; stattdessen einheitliche Hintergrundfarbe) und wie es jetzt beim Artikel oben und unten aussieht (auch hier keine Lücken mehr)
    Angehängte Grafiken

  4. #4
    Neu an Board
    Registriert seit
    09.03.2005
    Beiträge
    27
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Ich hab mal eine Frage,
    könnte man dieses Voting so verändern, dass man mehrere Optionen zur Verfügung hat?

    Also nicht nur von gut bis schlecht sondern, dass dann mehrere Abstimmungen dort sind.
    z.B.

    Layout gut - schlecht
    Inhalt gut - schlecht
    usw.
    evtl, dann noch ein Gesamtvoting, dass die einzelnen Abstimmungen vereint und auf der Frontpage erscheint.

    Die Einzelnen Umfragen sind dann ja folglich im Artikel dargestellt.

    Layout gut - schlecht
    Inhalt gut - schlecht

    Gesamtbewertung gut - schlecht


    So a la DooYoo ..

    Wäre so etwas schwer zu relisieren ?
    Hab nicht so einen Plan von php - that's the problem.

    Im Grunde müsste man dann doch nur den Voting code entsprechend verfielfältigen und dann nur entsprechend andere Tabellen in der DB ansteuern oder ?
    Geändert von Buletti (09.09.2005 um 14:12 Uhr)

  5. #5
    Kommt häufiger vorbei
    Registriert seit
    19.04.2005
    Beiträge
    417
    Bedankte sich
    0
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    hm - also so ohne Weiteres geht das wohl nicht. Die Bewertungen wollen ja
    - gepflegt werden (welche Kategorien soll es geben)
    - gespeichert werden

    Will sagen: Du redest dann von einer völlig anderen Voting-Funktion mit mehr Datenbank-Feldern etc.
    Klar, man könnte die jetzige als Basis nehmen und _kräftig_ tweaken - aber das mache sicher nicht ich

    Gerade vor ein paar Tagen fragte jemand nach so was (so quasi für Hotels oder so ähnlich - Wie waren die Betten? wie das Frühstück? Der Service? etc.) - ich finde den Thread nur leider nicht wieder. Da wurde zu einem Tool verwiesen das _deutlich_ aufwendiger ist aber sowas wohl ermöglichen soll - vielleicht findest Du es wieder.

  6. #6
    Neu an Board
    Registriert seit
    23.11.2006
    Beiträge
    15
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo
    Wenn ich das so änder bleibt die Bewertung auf der Frontpage,die soll aber nur im Inhalt sein.
    Es liegt wohl daran das es nur im Mambo so klappte,könnte mir jemand sagen was man ändern muss?
    Gruss Jörg

+ Antworten

Ähnliche Themen

  1. darstellung des admin-bereiches
    Von dada im Forum Mambo Installation
    Antworten: 13
    Letzter Beitrag: 21.08.2005, 13:45
  2. Mambo darstellung
    Von DeeEzz im Forum Allgemeine Fragen zu Mambo
    Antworten: 2
    Letzter Beitrag: 06.07.2005, 11:06
  3. Darstellung: Blog Content Category
    Von Saesh im Forum Allgemeine Fragen zu Mambo
    Antworten: 2
    Letzter Beitrag: 12.05.2005, 06:21
  4. Unzufrieden mit Darstellung von Content-Seiten
    Von BirgitLachner im Forum Allgemeine Fragen zu Mambo
    Antworten: 6
    Letzter Beitrag: 04.04.2005, 05:54
  5. Darstellung des Contents in der Frontpage
    Von Begru im Forum Mambo 4.5.0 Komponenten
    Antworten: 2
    Letzter Beitrag: 09.09.2004, 09:45

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein