"weiter" und "zurück" links in artikelli

Gesperrt
llaron
Beiträge: 133
Registriert: Mi 14. Jul 2004, 12:54
Kontaktdaten:

"weiter" und "zurück" links in artikelli

Beitrag von llaron »

hallo zusammen,

ich verwende das advanced modrewirte von stese - funktioniert auch einwandfrei :-)

nun habe ich die artikelliste mit bild eingesetzt (von andreas kummer) und müsste wissen, wie ich die "weiter" und "zurück" links zum durchblättern bzw. den link "zurück zur übersicht" bestücken muss, damit sie auf dem modrewirte funktionieren!

anbei der code für die ausgabe:

ausgabe:

Code: Alles auswählen

<?php
##########################################
#
#	artikelliste mit Bild ohne datum
#
##########################################

    // manuelle konfiguration des moduls
    $uploadpfad = "/cms/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende)
    $thumbnailpfad = "/cms/upload/vorschau/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende)

    // konfiguration

    $categorie = "CMS_VALUE[0]";

    $angezeigte_anzahl = "CMS_VALUE[1]";
    if ($angezeigte_anzahl == '') $angezeigte_anzahl = 3;

    $startartikel = "CMS_VALUE[2]";
    if ($startartikel == '') $startartikel = false;

    $subheadline = "CMS_VALUE[3]";
    if ($subheadline == '') $subheadline = 150;

    $navigationslink['previous'] = "CMS_VALUE[4]";
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[rückwärts]';

    $navigationslink['next'] = "CMS_VALUE[5]";
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[vorwärts]';

    $ebene = "CMS_VALUE[6]";

    $bildbreite = "CMS_VALUE[7]";

    $limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);

    $db = new DB_Contenido;
    $db2 = new DB_Contenido;

    // wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht
    $nurstartartikel = ($startartikel)?(''):('AND d.is_start = 0');

    // liest die anzahl betroffener artikel aus der datenbank
    switch ($ebene) {
        case -2:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.parentid = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.parentid = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                ";
            break;
        case -1:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
        case 0:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = $lang
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
    }

    $db->query($sql_1);
    $db->next_record();
    $anzahl_artikel = $db->f("anzahl");

    $db->query($sql_2);
    echo '<table cellpadding="0" cellspacing="0" style="width:100%" border="0">';

    while ($db->next_record()) {
        
        $sql = "
            SELECT a.value, a.typeid, b.type, c.filename, c.dirname FROM {$cfg['tab']['content']} AS a
            LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype
            LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl
            WHERE
            a.idartlang = ".$db->f("idartlang")."
            AND (
                b.type = 'CMS_HTMLHEAD'
                OR b.type = 'CMS_IMG'
            )
            ORDER BY b.type, a.typeid ASC
            ";

        // print "<p>$sql</p>";

        $db2->query($sql);
        $db2->next_record();

        $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));
		//$link = $sess->url("/$client/$lang/".$db->f("idcat")."/".$db->f("idart").".html");
        echo "<tr>
			<td colspan=\"2\"><img src=\"../../../cms/images/clear.gif\" width=\"1\" height=\"15\" alt=\"spacer\"></td></tr>
		<tr>
		<td valign=\"top\" colspan=\"2\" class=\"text-orange\"><b><a href=\"$link\">".urldecode($db2->f("value"))."</a></b></td></tr>
		<tr>
			<td colspan=\"2\"><img src=\"../../../cms/images/clear.gif\" width=\"1\" height=\"15\" alt=\"spacer\"></td>";
        #echo "<td><!-- ".$db->f("erstellungsdatum")."--></td>
		echo "</tr>";

        $db2->next_record();

        // die subheadline auf die gewünschte länge reduzieren (trennung nur
        // nach bzw. vor einem ganzen wort
        if (strlen($db2->f("value")) > $subheadline) {
            $newsubheadline = '';
            $worte = explode (" ",strip_tags(urldecode($db2->f("value"))));
            $zulang = false;
            foreach ($worte as $wort) {
                if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
                $newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
            }
            $newsubheadline .= "...";
        } else {
            $newsubheadline = strip_tags(urldecode($db2->f("value")));
        }

        $bild_vorhanden = false;
        while ($db2->next_record()) {
            if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 1) {
                $bilddateiname = "{$thumbnailpfad}{$bildbreite}_".$db2->f("value").".jpg";
                if (!file_exists($cfg['path']['frontend'].$bilddateiname)) {

                    $src_image_size = getimagesize($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));

                    $bildhoehe = round($src_image_size[1] * $bildbreite / $src_image_size[0]);
                    if ($bildhoehe > $bildbreite) {
                        $bildhoehe = $bildbreite;
                        $bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]);
                    }

                    $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);

                    if ($src_image_size[2] == 1) {
                        $src_im = imagecreatefromGIF($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
                    } elseif ($src_image_size[2] == 2) {
                        $src_im = @ImageCreateFromJPEG($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
                    } else {
                        $src_im = imagecreatefromgd($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
                    }
                    
                    imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
                    imagejpeg ($dst_im,$cfg['path']['frontend'].$bilddateiname,100);
                }
                $bild_vorhanden = true;
            }
        }

        if ($bild_vorhanden) {
            $width = "CMS_VALUE[7]";
            $width += 5;
            echo "<tr>
			<td valign=\"top\" style=\"width:{$width}px;\" rowspan=2><a href=\"$link\"><img border=\"0\" src=\"$bilddateiname\"></a><br><br></td>
			<td valign=\"top\" class=\"text\">$newsubheadline</td>
			</tr>
			<tr>
				<td valign=\"bottom\" align=\"right\" colspan=\"2\"><a href=\"$link\">weiterlesen <img src=\"../../../cms/images/pfeil-weiter.gif\" height=\"15\" width=\"13\" alt=\"pfeil\" border=\"0\">&nbsp;&nbsp;</a></td>
			</tr>";
			echo "<tr>
				<td height=\"3\" colspan=\"2\"><img src=\"../../../cms/upload/bilder/leistung/trenner.gif\" height=\"3\" width=\"375\" alt=\"spacer\"></td>
			</tr>";
        } else {
            echo "<tr>
			<td valign=\"top\" colspan=\"2\">$newsubheadline</td>
			</tr>
			<tr>
				<td valign=\"bottom\" align=\"right\" colspan=\"2\"><a href=\"$link\">weiterlesen <img src=\"../../../cms/images/pfeil-weiter.gif\" height=\"15\" width=\"13\" alt=\"pfeil\" border=\"0\">&nbsp;&nbsp;</a></td>
			</tr>";
			echo "<tr>
				<td height=\"3\" colspan=\"2\"><img src=\"../../../cms/upload/bilder/leistung/trenner.gif\" height=\"3\" width=\"375\" alt=\"spacer\"></td>
			</tr>";
        }

    }

    echo '</table>';

    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) {
        echo '<table cellpadding="3" cellspacing="0" style="width:100%" border="0">
		<tr>';
        if ($limit > 0) {
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0);
            echo "<td style=\"text-align:left\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>";
        } else {
            echo '<td>&nbsp;</td>';
        }
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) {
            $displaylimit = $limit + $angezeigte_anzahl;
            echo "<td style=\"text-align:right\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>";
        } else {
            echo '<td>&nbsp;</td>';
        }
        echo '</tr></table>';
    }
?>
merci im voraus,
nico
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

wie sehen denn die transformierten links für weiter und zurück aus ?
oder findet keine transformation bei diesen links statt... ?
oder werden einfach nur gewisse parameter unterschlagen ?

klingt aber eher so als würde das nicht berücksichtigt...
eine anpassung könnte dir wohl nur stese liefern...
innerhalb des moduls wird es wohl nicht gehen...
*** make your own tools (wishlist :: thx)
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

ja das liegt an meinem mod rewrite modul. ich werde es die tage dahingehend anpassen, dass "fremdparameter" berücksichtigt werden.
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

so, habs geändert.

bitte öffne die datei
/contenido/classes/class.modrewrite.php
suche die funktion
build_new_url ()
(Zeile 407)

und ersetze diese funktion mit nachfolgender:

Code: Alles auswählen

	/**
     * build_new_url()
	 *
     * build new url from given arguments
	 *
	 * get querystring of front_content.php and 
	 * convert this url to the new mod_rewrite url
	 * method will be startet before the complete 
	 * output of the front site will be executed
	 *
	 * @param	string	given arguments
     * @return 	string	new url
     */
	function build_new_url ( $str_args = "" ) {
		global $cfg, $lang, $client;
		
		$str_new_url = "";
		$str_categories = "";
		$str_article = "";
		
		// check arguments ... and split
		$str_args = str_replace ( "?", "", $str_args );
		$str_args = str_replace ( "&", "&", $str_args );
		parse_str ($str_args);
		
        // get additional non contenido parameters
        $str_additional_params = '';
        $arr_additional_params = array();
        $arr_param_pairs = split( "&", $str_args );
        
        $arr_ignored_params = array ( 'idcat', 'idart', 'lang', 'client', 'idcatart' );
        
        foreach ( $arr_param_pairs as $str_pair ) {
            $bol_found_bad = false;
            $arr_param = split ( "=", $str_pair );
            
            foreach ( $arr_ignored_params as $str_key ) {
                if ( $str_key == strtolower(trim($arr_param[0])) ) {
                    $bol_found_bad = true;
                    break;
                }
                
            }
            if ( $bol_found_bad == false ) {
                $arr_additional_params[] = $arr_param[0] . '=' . $arr_param[1];
            }
          
        }
        if ( count ( $arr_additional_params ) > 0 ) {
            $str_additional_params = '?' . join ( "&", $arr_additional_params );
        }
        
		
		// set language? 
		$str_lang = ($cfg["mod_rewrite"]['use_language'] == 1 ) ? ModRewrite::get_language_name($lang) . "/" : '';
	
		// define rootpath ...
		$str_new_url = $cfg['mod_rewrite']['rootdir'] . $str_lang;
		
		// check if article id is given and set article url
		if (isset($idart) && $idart > 0) {
			$str_article = ModRewrite::get_art_websafename ( $idart, $lang ) . ".html";
		}
		
		// check if only article id is given, cat id have to rebuild
		if (isset($idart) && $idart > 0 && ( !isset($idcat) || $idcat == 0 ) ) {
			$db = new DB_Contenido;
			
			$sql = "SELECT idcat
					FROM " . $cfg["tab"]["cat_art"] . " 
					WHERE idart = '$idart'";
    	    $db->query($sql);
			$db->next_record();
			
			$idcat = $db->f('idcat');
		}
		
		// ok build dir list, if idcat found ...
		if (isset($idcat) && $idcat > 0) {
			$str_categories = ModRewrite::build_recursiv_path ( $idcat, $lang );
			
			// check start directory settings
			if ( $cfg['mod_rewrite']['startfromroot'] == 0 ) {
				// splitt string in array
				$arr_categories = split( "/", $str_categories);
				
				// remove first category
				$str_first_cat = array_shift ( $arr_categories );
				
				// implode array with categories to new string 
				$str_categories = join ( "/",  $arr_categories );
			}
		}
		
		
		return $str_new_url . $str_categories . $str_article . $str_additional_params;
		
	}	// end function
damit sollten jetzt alle parameter die nicht idcat, idart, lang, client sind als get-parameter hinten an die url angehangen werden.
Gesperrt