Ich suche nach einem Snippet, mit dem ich die Gesamtanzahl für einen bestimmten Knotentyp anzeigen kann, z. B. "Pages = 167" oder "Products = 10630".
Welchen Code soll ich verwenden, um dies zu erreichen?
Hier ist eine Funktion, die die Anzahl der Knoten für einen bestimmten Inhaltstyp zurückgibt:
function YOURTHEME_get_node_count($content_type) {
$query = 'SELECT COUNT(*) ' .
'FROM {node} n ' .
'WHERE n.type = :type';
return db_query($query, array(
':type' => $content_type
))->fetchField();
}
Um diesen Code in Ihrem Design zu verwenden, fügen Sie die Funktion zu Ihrem hinzu, template.php
und dann können Sie die Funktion wie folgt aufrufen:
echo 'Pages: ' . YOURTHEME_get_node_count('page');
echo 'Products: ' . YOURTHEME_get_node_count('product');
Sie können dazu das Modul Ansichten verwenden.
Das sollte es sein! Passen Sie bei Bedarf weitere Einstellungen wie Feldbeschriftungen und Zeilenstileinstellungen an.
Hier ist ein Export einer solchen Ansicht, damit Sie sie leicht importieren und ausprobieren können:
$view = new view;
$view->name = 'nodecounts';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Node counts';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Node counts';
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
'type_1' => 'type_1',
'type' => 'type',
);
$handler->display->display_options['row_options']['separator'] = ': ';
$handler->display->display_options['row_options']['hide_empty'] = 0;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Field: Content: Type */
$handler->display->display_options['fields']['type_1']['id'] = 'type_1';
$handler->display->display_options['fields']['type_1']['table'] = 'node';
$handler->display->display_options['fields']['type_1']['field'] = 'type';
$handler->display->display_options['fields']['type_1']['label'] = '';
$handler->display->display_options['fields']['type_1']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['external'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type_1']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type_1']['alter']['html'] = 0;
$handler->display->display_options['fields']['type_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type_1']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type_1']['hide_empty'] = 0;
$handler->display->display_options['fields']['type_1']['empty_zero'] = 0;
$handler->display->display_options['fields']['type_1']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type_1']['link_to_node'] = 0;
$handler->display->display_options['fields']['type_1']['machine_name'] = 0;
/* Field: COUNT(Content: Type) */
$handler->display->display_options['fields']['type']['id'] = 'type';
$handler->display->display_options['fields']['type']['table'] = 'node';
$handler->display->display_options['fields']['type']['field'] = 'type';
$handler->display->display_options['fields']['type']['group_type'] = 'count';
$handler->display->display_options['fields']['type']['label'] = '';
$handler->display->display_options['fields']['type']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['type']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['type']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['type']['alter']['external'] = 0;
$handler->display->display_options['fields']['type']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['type']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['type']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['type']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['type']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['type']['alter']['trim'] = 0;
$handler->display->display_options['fields']['type']['alter']['html'] = 0;
$handler->display->display_options['fields']['type']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['type']['element_default_classes'] = 1;
$handler->display->display_options['fields']['type']['hide_empty'] = 0;
$handler->display->display_options['fields']['type']['empty_zero'] = 0;
$handler->display->display_options['fields']['type']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['type']['separator'] = '';
$handler->display->display_options['fields']['type']['format_plural'] = 0;
/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
Die bevorzugte programmatische Methode ist die Verwendung der EntityFieldQuery-Klasse . Erfahren Sie, warum EntityFieldQuery db_query () überlegen ist .
Hier ist ein Beispiel für das Zählen von Knoten des Typs Blog.
Siehe ähnliche Frage .
quelle
Ich habe das mit EntityFieldQuery gemacht.
quelle
Die Verwendung von Drush ist einfach und schnell.
Dies ergibt eine Ausgabe ähnlich der folgenden:
Und wenn Sie nach einem bestimmten Typ filtern möchten, verwenden Sie einfach grep wie folgt:
quelle
Für alle Interessierten besteht eine andere Lösung darin, die countQuery- Methode der SelectQuery- Klasse (über db_select ) zu verwenden.
Ich bevorzuge jedoch die EntityFieldQuery-Lösung von timofey. Ich biete dies nur als vernünftige Alternative an.
quelle
Verwenden Sie diese Abfrage in Ihrem Code
quelle
Das Knotentyp- Zählmodul macht das Gleiche wie Sie.
quelle
Als Abwandlung der Antwort zum Verwenden des Moduls " Ansichten " können Sie die Ansicht verwenden, die mit dem Modul "Diagramme" geliefert wird. Einfach installieren / aktivieren, keine zusätzliche Konfiguration, Codierung usw. erforderlich. Weitere Details zu dieser Ansicht finden Sie in den Standardbeispielen (Zitat aus diesem Link):
Anmerkungen:
Offenlegung: Ich bin der Betreuer dieses Moduls.
Ich hoffe, dies verstößt nicht gegen die Richtlinie der Website zur Eigenwerbung .
quelle