Hallo,
ich würde ganz gerne hinter den Kategorien in der Sitebar, die Anzahl der Einträge in dieser Kategorie anzeigen lassen. Irgendjemand eine Idee wie?
Gruß Yvonne
http://www.yvonne-winter.de
Anzahl der Einträge in den Kategorien
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Anzahl der Einträge in den Kategorien
Dafür gibt es leider noch keine Option/Plugin, da das zählen alle Einträge sehr viel Performance schluckt...
Theoretisch wäre das von einem PHP/SQL-begabten aber schnell erledigt. Wurde bisher nur noch nie gefordert.
Viele Grüße,
Garvin
Theoretisch wäre das von einem PHP/SQL-begabten aber schnell erledigt. Wurde bisher nur noch nie gefordert.
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
Yvonne Winter
Bin weder in dem einen noch in dem anderen sonderlich begabt.
Allerdings ist mir gerade aufgefallen das auf der Statistik-Seite im Adminbereich genau sowas angezeigt wird:
Allerdings ist mir gerade aufgefallen das auf der Statistik-Seite im Adminbereich genau sowas angezeigt wird:
Kann man das nicht irgendwie nutzen?Verteilung der Artikel auf Kategorien
Gefragtes
6 eingetragene(r) Artikel
Erlebtes
3 eingetragene(r) Artikel
Sneak
3 eingetragene(r) Artikel
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Ja, das kann man schon nutzen. Weil Du aber so forsch nachgefragt hast, habe ich das gerade in Serendipity 0.9 eingebaut.
Um das in 0.8 einzubauen kannst Du mal probieren die klasse serendipity_categories_plugin in der Datei include/plugins_internal.inc.php durch folgendes zu ersetzen:
Dann noch die Datei plugin_categories.tpl in Dein Templateverzeichnis kippen:
Und dann in der Konfiguration Sarty-Templating und "Count categories" aktivieren. In Deiner Sprachdatei werden ein paar Konstanten fehlen, das sollte aber nicht so tragisch sein.
Viele Grüße,
Garvin
Um das in 0.8 einzubauen kannst Du mal probieren die klasse serendipity_categories_plugin in der Datei include/plugins_internal.inc.php durch folgendes zu ersetzen:
Code: Select all
class serendipity_categories_plugin extends serendipity_plugin {
var $title = CATEGORIES;
function introspect(&$propbag) {
global $serendipity;
$propbag->add('name', CATEGORIES);
$propbag->add('description', CATEGORY_PLUGIN_DESC);
$propbag->add('stackable', true);
$propbag->add('author', 'Serendipity Team');
$propbag->add('version', '2.0');
$propbag->add('configuration', array('authorid', 'parent_base', 'image', 'sort_order', 'sort_method', 'allow_select', 'hide_parallel', 'show_count', 'smarty'));
$propbag->add('groups', array('FRONTEND_VIEWS'));
}
function introspect_config_item($name, &$propbag)
{
global $serendipity;
switch($name) {
case 'authorid':
$row_authors = serendipity_db_query("SELECT realname, authorid FROM {$serendipity['dbPrefix']}authors");
$authors = array('all' => ALL_AUTHORS);
if (is_array($row_authors)) {
foreach($row_authors as $row) {
$authors[$row['authorid']] = $row['realname'];
}
}
$propbag->add('type', 'select');
$propbag->add('name', CATEGORIES_TO_FETCH);
$propbag->add('description', CATEGORIES_TO_FETCH_DESC);
$propbag->add('select_values', $authors);
$propbag->add('default', 'all');
break;
case 'parent_base':
$categories = array('all' => ALL_CATEGORIES);
$cats = serendipity_fetchCategories();
if (is_array($cats)) {
$cats = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED);
foreach($cats as $cat) {
$categories[$cat['categoryid']] = str_repeat(' . ', $cat['depth']) . $cat['category_name'];
}
}
$propbag->add('type', 'select');
$propbag->add('name', CATEGORIES_PARENT_BASE);
$propbag->add('description', CATEGORIES_PARENT_BASE_DESC);
$propbag->add('select_values', $categories);
$propbag->add('default', 'all');
break;
case 'hide_parallel':
$propbag->add('type', 'boolean');
$propbag->add('name', CATEGORIES_HIDE_PARALLEL);
$propbag->add('description', CATEGORIES_HIDE_PARALLEL_DESC);
$propbag->add('default', false);
break;
case 'allow_select':
$propbag->add('type', 'boolean');
$propbag->add('name', CATEGORIES_ALLOW_SELECT);
$propbag->add('description', CATEGORIES_ALLOW_SELECT_DESC);
$propbag->add('default', true);
break;
case 'sort_order':
$select = array();
$select['category_name'] = CATEGORY;
$select['category_description'] = DESCRIPTION;
$select['categoryid'] = 'ID';
$select['none'] = NONE;
$propbag->add('type', 'select');
$propbag->add('name', SORT_ORDER);
$propbag->add('description', '');
$propbag->add('select_values', $select);
$propbag->add('default', 'category_name');
break;
case 'sort_method':
$select = array();
$select['ASC'] = SORT_ORDER_ASC;
$select['DESC'] = SORT_ORDER_DESC;
$propbag->add('type', 'select');
$propbag->add('name', SORT_ORDER);
$propbag->add('description', '');
$propbag->add('select_values', $select);
$propbag->add('default', 'ASC');
break;
case 'image':
$propbag->add('type', 'string');
$propbag->add('name', XML_IMAGE_TO_DISPLAY);
$propbag->add('description', XML_IMAGE_TO_DISPLAY_DESC);
$propbag->add('default', serendipity_getTemplateFile('img/xml.gif'));
break;
case 'smarty':
$propbag->add('type', 'boolean');
$propbag->add('name', CATEGORY_PLUGIN_TEMPLATE);
$propbag->add('description', CATEGORY_PLUGIN_TEMPLATE_DESC);
$propbag->add('default', false);
break;
case 'show_count':
$propbag->add('type', 'boolean');
$propbag->add('name', CATEGORY_PLUGIN_SHOWCOUNT);
$propbag->add('description', '');
$propbag->add('default', false);
break;
default:
return false;
}
return true;
}
function generate_content(&$title) {
global $serendipity;
$smarty = serendipity_db_bool($this->get_config('smarty', false));
$which_category = $this->get_config('authorid');
$sort = $this->get_config('sort_order');
if ($sort == 'none') {
$sort = '';
} else {
$sort .= ' ' . $this->get_config('sort_method');
}
$is_form = serendipity_db_bool($this->get_config('allow_select'));
$categories = serendipity_fetchCategories(empty($which_category) ? 'all' : $which_category, '', $sort);
$title = $this->title;
$cat_count = array();
if (serendipity_db_bool($this->get_config('show_count'))) {
$cat_sql = "SELECT c.categoryid, c.category_name, count(e.id) as postings
FROM {$serendipity['dbPrefix']}entrycat ec,
{$serendipity['dbPrefix']}category c,
{$serendipity['dbPrefix']}entries e
WHERE ec.categoryid = c.categoryid AND ec.entryid = e.id
GROUP BY ec.categoryid, c.category_name
ORDER BY postings DESC";
$category_rows = serendipity_db_query($cat_sql);
if (is_array($category_rows)) {
foreach($category_rows AS $cat) {
$cat_count[$cat['categoryid']] = $cat['postings'];
}
}
}
$html = '';
if (!$smarty && $is_form) {
$html .= '<form action="' . $serendipity['baseURL'] . $serendipity['indexFile'] . '" method="post"><div>';
}
$image = $this->get_config('image', serendipity_getTemplateFile('img/xml.gif'));
$image = (($image == "'none'" || $image == 'none') ? '' : $image);
$use_parent = $this->get_config('parent_base');
$parentdepth = 0;
$hide_parallel = serendipity_db_bool($this->get_config('hide_parallel'));
$hidedepth = 0;
if (is_array($categories) && count($categories)) {
$categories = serendipity_walkRecursive($categories, 'categoryid', 'parentid', VIEWMODE_THREADED);
foreach ($categories as $cid => $cat) {
// Hide parents not wanted
if ($use_parent && $use_parent != 'all') {
if ($parentdepth == 0 && $cat['parentid'] != $use_parent && $cat['categoryid'] != $use_parent) {
continue;
} else {
if ($cat['depth'] < $parentdepth) {
$parentdepth = 0;
continue;
}
if ($parentdepth == 0) {
$parentdepth = $cat['depth'];
}
}
}
// Hide parents outside of our tree
if ($hide_parallel && $serendipity['GET']['category']) {
if ($hidedepth == 0 && $cat['parentid'] != $serendipity['GET']['category'] && $cat['categoryid'] != $serendipity['GET']['category']) {
continue;
} else {
if ($cat['depth'] < $hidedepth) {
$hidedepth = 0;
continue;
}
if ($hidedepth == 0) {
$hidedepth = $cat['depth'];
}
}
}
$categories[$cid]['feedCategoryURL'] = serendipity_rewriteURL(PATH_FEEDS .'/'. PATH_CATEGORIES .'/'. serendipity_makePermalink(PERM_FEEDS_CATEGORIES, array('id' => $cat['categoryid'], 'title' => $cat['category_name'])));
$categories[$cid]['categoryURL'] = serendipity_rewriteURL(PATH_CATEGORIES . '/' . serendipity_makePermalink(PERM_CATEGORIES, array('id' => $cat['categoryid'], 'title' => $cat['category_name'])), 'serendipityHTTPPath');
$categories[$cid]['paddingPx'] = $cat['depth']*6;
if (!empty($cat_count[$cid])) {
$categories[$cid]['true_category_name'] = $cat['category_name'];
$categories[$cid]['category_name'] .= ' (' . $cat_count[$cid] . ')';
}
if (!$smarty) {
$html .= '<div style="padding-bottom: 2px;">';
if ($is_form) {
$html .= '<input style="width: 15px" type="checkbox" name="serendipity[multiCat][]" value="' . $cat['categoryid'] . '" />';
}
if ( !empty($image) ) {
$html .= '<a href="'. $categories[$cid]['feedCategoryURL'] .'"><img src="'. $image .'" alt="XML" style="border: 0px" /></a> ';
}
$html .= '<a href="'. $categories[$cid]['categoryURL'] .'" title="'. htmlspecialchars($cat['category_description']) .'" style="padding-left: '. $categories[$cid]['paddingPx'] .'px">'. htmlspecialchars($categories[$cid]['category_name']) .'</a>';
$html .= '</div>' . "\n";
}
}
}
if (!$smarty && $is_form) {
$html .= '<br /><input type="submit" name="serendipity[isMultiCat]" value="' . GO . '" /><br />';
}
if (!$smarty) {
$html .= sprintf(
'<br /><a href="%s" title="%s">%s</a>',
$serendipity['serendipityHTTPPath'] . $serendipity['indexFile'],
ALL_CATEGORIES,
ALL_CATEGORIES
);
}
if (!$smarty && $is_form) {
$html .= '</div></form>';
}
if (!$smarty) {
echo $html;
} else {
$serendipity['smarty']->assign(array(
'is_form' => $is_form,
'category_image' => $image,
'form_url' => $serendipity['baseURL'] . $serendipity['indexFile'],
'categories' => is_array($categories) ? $categories : array()
));
echo serendipity_smarty_fetch('CATEGORIES', 'plugin_categories.tpl');
}
}
}
Code: Select all
{if $is_form}
<form id="serendipity_category_form" action="{$form_url}" method="post">
<div id="serendipity_category_form_content">
{/if}
<ul id="serendipity_categories_list" style="list-style: none; margin: 0px; padding: 0px">
{foreach from=$categories item="plugin_category"}
<li style="display: block;">
{if $is_form}
<input style="width: 15px" type="checkbox" name="serendipity[multiCat][]" value="{$plugin_category.categoryid}" />
{/if}
{if !empty($category_image)}
<a class="serendipity_xml_icon" href="{$plugin_category.feedCategoryURL}"><img src="{$category_image}" alt="XML" style="border: 0px" /></a>
{/if}
<a href="{$plugin_category.categoryURL}" title="{$plugin_category.category_description|escape}" style="padding-left: {$plugin_category.paddingPx}px">{$plugin_category.category_name|escape}</a>
</li>
{/foreach}
</ul>
{if $is_form}
<br /><input type="submit" name="serendipity[isMultiCat]" value="{$CONST.GO}" /><br />
{/if}
<br /><a href="{$form_url}" title="{$CONST.ALL_CATEGORIES}">{$CONST.ALL_CATEGORIES}</a>
{if $is_form}
</div>
</form>
{/if}
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Anzahl Kategorien...
@Garvin
ich hatte ja auch mal vor einiger Zeit nach einer Möglichkeit gefragt, die Anzahl Einträge pro Kategorie auszugeben...
Ehrlich gesagt kann ich nicht ganz nachvollziehen, wie ich das, was du beschreibst, auch in der von mir eingesetzten Version 0.84 machen kann.
Ich habe den Code in der genannten Datei ersetzt, allerdings weiss ich nicht, was für eine tpl-Datei du meinst mit der plugin_categories.tpl... Soll die Datei neu angelegt werden?
Der Versuch, das nachvollziehen, hat bei mir nicht zum Erfolg geführt, ausser das bei den Kategorien der Optionsbutton für eine Mehrfachauswahl erschien.
Verstanden habe ich ehrlich gesagt auch nicht, an welcher Stelle ich da noch was genau "aktivieren" muss...
Oder stehe ich heute besonders auf dem Schlauch:-)
Wäre nett, wenn du das noch einmal kurz erläutern könntest...
Vielen Dank im Voraus!
Liebe Grüsse, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog
ich hatte ja auch mal vor einiger Zeit nach einer Möglichkeit gefragt, die Anzahl Einträge pro Kategorie auszugeben...
Ehrlich gesagt kann ich nicht ganz nachvollziehen, wie ich das, was du beschreibst, auch in der von mir eingesetzten Version 0.84 machen kann.
Ich habe den Code in der genannten Datei ersetzt, allerdings weiss ich nicht, was für eine tpl-Datei du meinst mit der plugin_categories.tpl... Soll die Datei neu angelegt werden?
Der Versuch, das nachvollziehen, hat bei mir nicht zum Erfolg geführt, ausser das bei den Kategorien der Optionsbutton für eine Mehrfachauswahl erschien.
Verstanden habe ich ehrlich gesagt auch nicht, an welcher Stelle ich da noch was genau "aktivieren" muss...
Oder stehe ich heute besonders auf dem Schlauch:-)
Wäre nett, wenn du das noch einmal kurz erläutern könntest...
Vielen Dank im Voraus!
Liebe Grüsse, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Anzahl Kategorien...
kho:
Die .tpl Datei habe ich doch in meinem Beitrag mit gepostet.
Die ist ansonsten Bestandteil der neuen nightlies.

Hoffe, Dich vom Schlauch gestellt zu haben,
viele Grüße,
Garvin
Die .tpl Datei habe ich doch in meinem Beitrag mit gepostet.
Auch dran gedacht, die Konfiguration des Kategorienplugins zu betreten um das Zählen der Einträge zu aktivieren?Der Versuch, das nachvollziehen, hat bei mir nicht zum Erfolg geführt, ausser das bei den Kategorien der Optionsbutton für eine Mehrfachauswahl erschien.
Hoffe, Dich vom Schlauch gestellt zu haben,
viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Anzahl Postings pro Kategorie...
@Garvin
Ja danke! Also, vom Schlauch bin ich jetzt runter:-)))
Die Version 0.9 gibt das ja alles her. Ich denke, ich werde so lange warten, bis das endgültige release da ist.
Btw. könntest du denn aus dem jetzigen Stand abschätzen, ob man die neue Version schon in einem "Produktivblog" einsetzen kann? Im Test sieht das ja alles schon gut aus... Aber ich hab mich bisher noch nicht getraut, die Version im aktiven blog bei mir einzusetzen...
Im Übrigen kann ich nur sagen, s9y macht wirklich Spass!!
Und an dieser Stelle auch mal einen ausdrücklichen Dank an Dich und die unermüdliche Arbeit, die du hier leistest!!
Liebe Grüsse, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog
Ja danke! Also, vom Schlauch bin ich jetzt runter:-)))
Die Version 0.9 gibt das ja alles her. Ich denke, ich werde so lange warten, bis das endgültige release da ist.
Btw. könntest du denn aus dem jetzigen Stand abschätzen, ob man die neue Version schon in einem "Produktivblog" einsetzen kann? Im Test sieht das ja alles schon gut aus... Aber ich hab mich bisher noch nicht getraut, die Version im aktiven blog bei mir einzusetzen...
Im Übrigen kann ich nur sagen, s9y macht wirklich Spass!!
Und an dieser Stelle auch mal einen ausdrücklichen Dank an Dich und die unermüdliche Arbeit, die du hier leistest!!
Liebe Grüsse, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Anzahl Postings pro Kategorie...
Wunderbar 
Die 0.9 Version sollte nach aktuellem Plan Ende des Monats veröffentlicht werden. Ich empfinde die Version bis dato als recht stabil und sehe keine Gründe die gegen einen Produktiveinsatz sprechen.
Vielen Dank für das Lob, das freut mich sehr! Auch weiterhin viel Spaß!
Viele Grüße,
Garvin
Die 0.9 Version sollte nach aktuellem Plan Ende des Monats veröffentlicht werden. Ich empfinde die Version bis dato als recht stabil und sehe keine Gründe die gegen einen Produktiveinsatz sprechen.
Vielen Dank für das Lob, das freut mich sehr! Auch weiterhin viel Spaß!
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/