Nachdem ich diese Beiträge gelesen hatte, entschloss ich mich, diese Funktion in das Plugin simpleplugins_xh einzubauen.
Dann habe ich utf8 konforme Stringoperationen eingebaut und bei der Gelegenheit eine etwas (nach meiner Meinung) schönere Formatierung eingefügt, die über CSS für Benutzerwünsche zugänglicher ist.
Und schließlich habe ich von dem Plugin simpleplugins_xh eine eigene Edition zusammengestellt.
https://lembach-cmsimple.de/?Plugins/Si ... dition-KRL
Jetzt gerade habe ich diesen Beitrag
viewtopic.php?f=12&t=17105&p=79157&hili ... ged#p79157 von olape gefunden. Darin ist ein Großteil, dessen, was ich gemacht habe, schon beschrieben.
Da jedoch ein paar Kleinigkeiten in meiner Arbeit über die Lösung von olape hinausgehen, habe ich mich entschlossen diesen Post dennoch zu veröffentlichen.
Code: Select all
if (!function_exists('recently_changed')) {
/**
* @copyright 2016 Christoph M. Becker
* @copyright 2016 (for some additions) by svasti
* 2018 small modifications by olape
* 2021 modifications (utf8 conform string operation and others) by Karl Richard Lembach (Caravaner)
* danach habe ich dieses gefunden: https://cmsimpleforum.com/viewtopic.php?f=12&t=17105&p=79157&hilit=racently_changed#p79157 von olape
* @license GPLv3
*/
/*
{{{recently_changed()}}}, {{{recently_changed(10)}}}, {{{PLUGIN:recently_changed(10,24);}}}, {{{PLUGIN:recently_changed('',24);}}}
oder im Template:
<?php echo recently_changed()?>, <?php echo recently_changed(10)?>, <?php echo recently_changed(10,24)?>, <?php echo recently_changed('',24)?>
*/
function recently_changed($count = 5, $length = 100)
{
global $pd_router, $cf;
$pageData = $pd_router->find_all();
uasort($pageData, function ($a, $b) {
return $b['last_edit'] - $a['last_edit'];
});
$pages = array();
$i = 0;
foreach (array_keys($pageData) as $page) {
if ($i < $count) {
if (!hide($page)) {
$timestamp = $pageData[$page]['last_edit'];
$date = date('d. M Y - H:m', $timestamp);
$pages[$date][] = $page;
$i++;
}
} else {
break;
}
}
global $sn, $h, $u;
$html = '<dl class="recently_changed">';
foreach ($pages as $date => $group) {
$html .= '<div class="recently_changed"><dt>' . $date . '</dt>';
foreach ($group as $page) {
$linktext = str_replace($cf['uri']['seperator'], '/', $u[$page]);
$linktext_length = mb_strlen($linktext,'utf8');
if($linktext_length > $length) {
$linktext = mb_substr($linktext, -$length, null, 'utf8');
$stringpos = mb_strpos($linktext, '/',0,'utf8');
$linktext = '...'.mb_substr($linktext, (-$length + $stringpos), null, 'utf8');
}
$html .= '<dd><a href="' . "$sn?$u[$page]" . '">/' . $linktext . '</a></dd>';
}
$html .= '</div>';
}
$html .= '</dl><p class="clear" style="font-size: 1px;"></p>';
return $html;
}
}
?>
Dazu kann man diesen Style in der stylesheet.css einbauen:
Code: Select all
:root {
--hintergrund: #fff;
--imageborder: rgba(0,0,0,.15);
--imagebackground: rgba(0,0,0,.05);
}
.recently_changed {
padding: .3em .3em .03em .3em;
}
dl.recently_changed {
border: 1px solid var(--imageborder);
float:left;
margin-bottom: .3em;
}
.recently_changed div {
background-color: var(--imagebackground);
border: 1px solid var(--imageborder);
margin-bottom: .3em;
}
.recently_changed dt {
background-color: var(--hintergrund);
border: 1px solid var(--imageborder);
padding: .3em 0px .3em .3em;
margin-bottom: .3em;
}
.recently_changed dd {
padding: 0 0 .2em 2em;
}
So sieht es aus mit bis zu 100 Zeichen in der Pfadlänge:
https://lembach-cmsimple.de/?last-changed
so sieht es mit bis zu 50 Zeichen aus (rechts in der Newsbox):
https://lembach-cmsimple.de/?Plugins/Si ... dition-KRL