[gelöst] Modul für Anzahl _aller_ veröffentlichen Inhaltstypen?
Eingetragen von schneseb (160)
am 20.12.2009 - 21:29 Uhr in
am 20.12.2009 - 21:29 Uhr in
Hallo,
ich hätte gerne einen kleinen Block auf der Seite der so etwas der Art:
[Inhalt]
32 Blogeinträge,
7 Buchseiten,
12 Artikel,
3 Seiten
auflistet. kennt jemand sowas? Erfahrungen?
Grüße
Sebastian
- Anmelden oder Registrieren um Kommentare zu schreiben
1. "Inhaltstyp" ist dem
am 20.12.2009 - 21:38 Uhr
1. "Inhaltstyp" ist dem Zusammenhang ein falsch gewählter Terminus, weil es nicht im Unahtlstypen, sondern um Nodes geht.
2. http://drupal.org/project/total_control
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Hallo Alexander, danke für
am 21.12.2009 - 13:48 Uhr
Hallo Alexander,
danke für die "Korrektur" und den Link. Ich habe das jetzt mal mit allen Abhängigkeiten installiert (war ne ganze Menge). Ich habe mir auch mal die neuen Einstellungsmöglichkeiten angesehen. So ganz weiß ich jetzt aber nicht wo und wie ich da ansetzen soll.
Was genau muss ich jetzt tun, damit ich das in einen Block bekomme um obiges Szenario (alle veröffentlichten Nodes) auf meiner Seite darzustellen?
Danke!
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Ach herrje, entschuldige!
am 21.12.2009 - 14:04 Uhr
Ach herrje, entschuldige! Ich war davon ausgegangen, du wolltest solch eine Übersicht für den Admin / die Redakteure haben!
Das ist jetzt natürlich mit Kanonen auf Spatzen geschossen. Ich finde ad hoc auch nur ein Modul, dass für jeden Inhaltstypen einzeln einen Block mit der Anzahl ausspuckt: http://drupal.org/project/count
Grundsätzlich ist sowas aber mit einem kleinen Modul recht schnell erledigt. Einfach über die Liste aller Inhaltstypen iterieren und je Eintrag einen COUNT(*) der veröffentlichten Nodes des Typs aus der DB abfragen und ausgeben.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Die Übersicht im Dashboard
am 21.12.2009 - 16:18 Uhr
Die Übersicht im Dashboard ist aber richtig klasse :-) genau so sollte es im Block sein. Nun gut, ich suche mal noch ein wenig weiter im Netz, habe noch keine Module programmiert und müßte mich da erst einlesen.
Das Countmodul wäre schon genau das, was ich bräuchte wenn alle Nodes drin wären.
Ich gebe dir Recht, aufwendig ist das garantiert nicht. Auch ich habe damit schon gedanklich gespielt, aber noch nicht weiter verfolgt.
Grüße
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Ist vielleicht genau das
am 21.12.2009 - 16:40 Uhr
Ist vielleicht genau das Richtige, um mal mit der Modulprogrammierung anzufangen. Alternativ / zusätzlich könnte man das auch mal eben runterprogrammieren, zusammen mit einer kleinen Admin-Seite, um bestimmte Inhaltstypen ein-/auszuschließen und das Modul dann veröffentlichen.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Hallo Alexander, das ist ein
am 21.12.2009 - 17:12 Uhr
Hallo Alexander,
das ist ein nettes Angebot, aber ich denke du hast auch hier Recht. Ich habe eben mal mein Drupal Entwicklerhandbuch rausgekramt und Kapitel 2 aufgeschlagen :-) Ich will das mal versuchen, würde mich dann ggf. hier noch mal melden, wenn ich Probleme habe.
Aber erstmal teste ich, vielen Dank!
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Im PHP Modus könntest Du
am 21.12.2009 - 19:14 Uhr
Im PHP Modus könntest Du auch einfach eine Datanbankabfrage machen. Folgenden Code habe ich im Forum auch mal erhalten ...
z.B.: 32 Blogeinträge
<?php print db_result(db_query("SELECT COUNT(nid) FROM {node} WHERE nid > 0 AND status = 1 AND type IN('%s')", implode(',', array('blog')))); ?>
Blogeinträge12 Artikel
<?php print db_result(db_query("SELECT COUNT(nid) FROM {node} WHERE nid > 0 AND status = 1 AND type IN('%s')", implode(',', array('story')))); ?>
Artikelusw. ...
--------------------
Design Probleme einfach mit FF und FIREBUG lösen!
Drupal 7 Screencasts in deutsch!
Hallo Alexander, hallo
am 21.12.2009 - 19:29 Uhr
Hallo Alexander, hallo Thoor,
ich noch mal mit Fragen zum generellen Vorgehen. Ich habe mir jetzt mal folgendes überlegt, damit die Aufgabe auch "spannend" wird :)
Der Block soll wie folgt aussehen:
Seiten: 12 (3 draft)
Artikel: 8 (0 draft)
Blogeinträge: 122 (12 draft)
dabei soll die Zahl in Klammern einfach die noch nicht veröffentlichten Nodes darstellen. Ob das nun sinnvoll ist, sei mal dahingestellt ;-)
Dann habe ich ein wenig in der DB geschnuppert -> Tabelle Node sollte wohl das für mich relevante enthalten.
das kann ich dann entsprechend auch mit den anderen Nodes machen, die ich angezeigt bekomme. Von meinen SQL Aktivitäten sollte das ausreichend sein.
Da ich nichts zum Konfigurieren haben möchte (jedenfalls nicht jetzt) brauche ich eigentlich nur ein Modul was mir einen Block generiert. Also schnell mal nachgeblättet und gefunden
Blöcke werden innerhalb von Modulen mithilfe von
hook_block()
definiert [...]also mache ich eine NodeCount.module mit
function NodeCount_block($op = 'list', $delta = 0, $edit = array()){
switch ($op) {
case 'list':
$blocks[0]['info'] = t('Node Counts');
$blocks[0]['cache'] = BLOCK_NO_CACHE;
return $blocks;
}
}
wenn ich das jetzt richtig überschaut habe, brauche ich noch die die Switch Anweisung nach 'view' damit man auch den Block sehen kann. Also obiges erweitert um
switch ($view) {
$result_blog_0 = db_query(SELECT count(nid) FROM `node` WHERE type='blog' and status = 0);
$result_blog_1 = db_query(SELECT count(nid) FROM `node` WHERE type='blog' and status = 1);
// ... und alle weiteren Abfragen hier hin.
// ja ich weiß, dass könnte man auch noch schön konfigurieren ;-)
$block['subject'] = t('Inhaltsübersicht');
$block['content'] = 'Blogeinträge: '.$result_blog_1.'('.$result_blog_0.' draft)<br>Artikel: ...'
}
War es das im Groben mit allem was ich brauche?
@Thoor: ja das probiere ich auch aus, ist ja deutlich kürzer als obiges Szenario. Oben nur mal um zu gucken, ob ich das so halbwegs verstanden habe :-)
Vielen Dank + Grüße
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Ähmmmm - schreib einfach
am 21.12.2009 - 19:44 Uhr
Ähmmmm - schreib einfach mal das obige in einen Block und wähle dabei PHP Modus als Eingabeformat .... schon ists fertig! Da braucht es keine Funktionen oder ähnliches!
--------------------
Design Probleme einfach mit FF und FIREBUG lösen!
Drupal 7 Screencasts in deutsch!
Ich halte es für didaktisch
am 21.12.2009 - 21:31 Uhr
Ich halte es für didaktisch falsch Anfängern, noch dazu wenn sie modulentwicklungswillig sind, zum bösen PHP-Filter zu raten. Der Zweck heiligt nicht immer die Mittel ;)
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Hallo, so über die
am 25.12.2009 - 11:55 Uhr
Hallo,
so über die Feiertage habe ich obige Blaupause mal schnell zusammengetackert mit etwas Bücherhilfe und habe ein Modul, was zumindestens keinen Fehler mehr produziert :-) Aber funktionieren tut es nicht, ich zeige euch mal meinen bisherigen Entwurf:
<?php
// $Id$
/**
* @file
* Module to provide total number of nodes in each content type in one block
*/
function NodeCount_block($op = 'list', $delta = 0, $edit = array()){
switch ($op) {
case 'list':
$blocks[0]['info'] = t('Node Counts');
$blocks[0]['cache'] = BLOCK_NO_CACHE;
return $blocks;
break;
case 'view':
$result_blog_0 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='blog' and status = 0"));
$result_blog_1 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='blog' and status = 1"));
$result_artikel_0 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='story' and status = 0"));
$result_artikel_1 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='story' and status = 1"));
$result_book_0 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='book' and status = 0"));
$result_book_1 = db_result(db_query("SELECT count(nid) FROM `node` WHERE type='book' and status = 1"));
$block['subject'] = t('Inhaltsübersicht');
$block['content'] = theme('Blogeinträge: '.$result_blog_1.'('.$result_blog_0.' draft)<br>Artikel: ...');
}
}
Ich glaube der Fehler liegt irgendwo im SQL, weiß aber nicht wie ich den erwischen kann. Da ich PHP praktisch nicht kenne, kann das natürlich auch noch ein Punkt sein, aber da lese ich mich aktuell auch noch ein.
Zum Ablauf: Ich sehe, wenn ich auf die Blöcke unter der Strukturierung gehe, das Modul gelistet und kann es auch der Sitebar zuweisen. Allerdings passiert dann gar nichts. iIch weiß auch nicht ob das mit dem Content "theme" stimmt. Denke auch eher nein, da selbst "Blogeinträge" nicht aufgelistet wird. Meine Vermutung also, dass ich da was falsch benutzt habe. Im Entwicklerbuch habe ich in den Beispielen nur obiges "theme" gefunden (hab aber auch noch nicht alles gelesen).
Das kann aber nur ne Kleinigkeit sein, oder?
Besten Dank und noch schöne weihnachtliche "Restfeiertragesgrüße" :-)
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Eigentlich kannste Dir das
am 25.12.2009 - 15:07 Uhr
Eigentlich kannste Dir das auch mit Views basteln.
<?php
function NodeCount_block($op = 'list', $delta = 0, $edit = array()){
switch ($op) {
case 'list':
$blocks[0]['info'] = t('Node Counts');
$blocks[0]['cache'] = BLOCK_NO_CACHE;
return $blocks;
break;
case 'view':
if ($delta == 0) {
$block['subject'] = t('Inhaltsübersicht');
$block['content'] = NodeCount_block_content('Blogeinträge', 'blog');
$block['content'] .= NodeCount_block_content('Artikel', 'story');
$block['content'] .= NodeCount_block_content('Bücher', 'book');
}
return $block;
}
}
function NodeCount_block_content($titel, $nodetype) {
$countunpublished = db_result(db_query("SELECT count(nid) FROM 'node' WHERE type='%s' and status = 0", $nodetype));
$countpublished = db_result(db_query("SELECT count(nid) FROM 'node' WHERE type='%s' and status = 1", $nodetype));
// Artikel: 5 (2 draft )
return $title .': '. $countpublished .' ('. $countunpublished .' draft)<br />';
}
?>
----------------------------------------
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hallo Tobias, danke für die
am 25.12.2009 - 21:05 Uhr
Hallo Tobias,
danke für die Hilfe, ich habe das in meine .module Datei reingepackt und auf den Webserver hochgeladen. Ich kann das auch unter den Blöcken auswählen, nur wenn ich das meiner Sitebar hinzufüge, dann sehe ich schlicht weg gar nichts. Was mache ich falsch?
Gruß+danke
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
Da hat das return noch
am 26.12.2009 - 01:52 Uhr
Da hat das return noch gefehlt. Siehe oben.
----------------------------------------
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hallo Tobias, recht schönen
am 26.12.2009 - 10:28 Uhr
Hallo Tobias,
recht schönen Dank. So klappt es, ich versuche jetzt ausgehend auf diesem Beispiel noch ein paar weiter "Gehversuche" zu machen.
$titel scheint allerdings nicht belegt zu sein (wird nicht angezeigt bei der Ausgabe) aber da schau ich mal gleich nach.
Schönen 2. Weihnachtstag dir noch!
Sebastian
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---
$title und $titel sind
am 26.12.2009 - 11:52 Uhr
$title und $titel sind ungleich. bisschen aufmerksamkeit darf ich auch verlangen :D.
----------------------------------------
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
*pfeif* ja sicher, deswegen
am 26.12.2009 - 14:51 Uhr
*pfeif* ja sicher, deswegen sagte ich ja ich gucks mir noch an ;-)
Danke!
--- Web | Twitter | XING ---
--- Web | Twitter | XING ---