block-News_short-more-columns.php durch Kategorieauswahl erweitern

Begonnen von Mx_Intra, 12 Dezember 2008, 23:12:08

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Mx_Intra

Hallo  :smile:

Ich habe bemerkt, wenn die News fast täglich Neuzugänge erhalten, manche News rasch in den Hintergrund geraten.

Nun habe ich die Idee, in den Einstellungen (ähnlich wie im MxBoard-center-Block die Foren ausgeblendet) des im Titel erwähnten Blocks zusätzlich die catid=1,3, 7, 10 auswählen zu können (im Mx-Tab kann so beispielsweise die Block aussuchen, die angezeigt werden sollen).

In der Suche kamen bisher keine brauchbaren Codes hervor, so dass ich hier mal einen sauberen Thread eröffnen möchte, der nicht ohne Resultat geschlossen werden muss.

Wenn der Block funktioniert, würde ich diesen für den Download empfehlen.

Ich füge mal den Code hier ein, damit man sieht, womit man es zu tun hat.

/**
* -----------------------------------------------------------------------------
* Einstellungen fuer den Block
*/
// News-Modulname
$module_name = "News";
// BlockCache ermöglichen?
$mxblockcache = true;
// Anzahl der Spalten
$showcolumns = 2;
// Anzahl der Artikel die angezeigt werden,
// es kann anstatt $GLOBALS['storyhome'] auch eine normale Zahl angegeben werden
$storynum = $GLOBALS['storyhome'];
// Anzahl der Zeichen die angezeigt werden
$textlen = 120;
// Bilder im Text anzeigen
$showpics = true;

/**
* ##################################################################################################
*/
global $prefix;

if ($GLOBALS["multilingual"] == 1) {
    if (ereg("german", $GLOBALS["currentlang"])) $thislang = "german";
    else $thislang = $GLOBALS["currentlang"];
    $querylang = "AND (alanguage LIKE '" . $thislang . "%' OR alanguage='')";
} else {
    $querylang = "";
}

$qry = "SELECT s.sid, aid, s.title, time, DATE_ADD(time, INTERVAL 2 DAY) AS expire, now() AS nowi, hometext, bodytext, comments, s.counter, topic, informant, notes, acomm
    FROM ${prefix}_stories AS s
    WHERE (ihome='0' OR s.catid='0') AND time <= now() $querylang
    ORDER BY s.time DESC, s.sid DESC
    limit 0,$storynum";

$result = sql_query($qry);
if (!$result) {
    return;
}

$list = array();
while ($story = sql_fetch_assoc($result)) {
    $story['title'] = "<a href=\"modules.php?name=$module_name&amp;file=article&amp;sid=" . $story['sid'] . "\">" . strip_tags($story['title']) . "</a>";
    $story['hometext'] = preg_replace('#<br\s*/*>#i', ' ', $story['hometext']);
    if ($showpics) {
        $story['hometext'] = strip_tags($story['hometext'], '<img>');
        $replaces = array();
        if (preg_match_all('#<img[^>]*>#si', $story['hometext'], $images)) {
            foreach($images[0] as $i => $img) {
                $alternate = md5($img);
                $textlen = $textlen + strlen($alternate);
                $replaces[$alternate] = $img;
                $story['hometext'] = str_replace($img, $alternate, $story['hometext']);
            }
        }
        $story['hometext'] = mxCutString(trim($story['hometext']), $textlen, "...", " ");
        if (count($replaces)) {
            $story['hometext'] = str_replace(array_keys($replaces), array_values($replaces), $story['hometext']);
        }
    } else {
        $story['hometext'] = strip_tags($story['hometext']);
        $story['hometext'] = mxCutString(trim($story['hometext']), $textlen, "...", " ");
    }
    $image = '';
    if ($story['nowi'] < $story['expire']) {
        $datetime = mx_strftime(_SHORTDATESTRING, mxSqlDate2UnixTime($story['time']));
        $image = mxCreateImage("images/menu/new.gif", 'new: ' . $datetime) . '&nbsp;';
    }
    $list[] = '<p>' . $image . '<strong>' . $story['title'] . '</strong><br />' . $story['hometext'] . '</p>';
}

if ($list && $showcolumns > 1) {
    $i = 0;
    $width = (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) ? 99 : 100;
    $width = floor($width / $showcolumns);
    $content = '<div>';
    foreach ($list as $key => $value) {
        $i++;
        $content .= '
<div style="float: left; width: ' . $width . '%; overflow: hidden; margin: 0; padding: 0;">
    <div style="margin-left: 3px; margin-right: 5px; margin-bottom: 5px; margin-top: 3px; padding: 0;">
    ' . $value . '
    </div>
</div>
';
        if ($i === $showcolumns) {
            $content .= '<div style="clear: both;"></div>';
            $i = 0;
        }
    }
    if ($i !== 0) {
        $content .= '<div style="clear: both;"></div>';
    }
    $content .= '</div>';
} else if ($list) {
    $content = implode("\n", $list);
}

?>


Würde mich freuen, wenn mir da jemand die richtigen Ergänzungen zeigen könnte.
Grüße, Intra