it-swarm.com.de

Wie erstelle ich programmgesteuert einen neuen Block?

Ich muss programmgesteuert einen neuen Block erstellen. Der Block muss 3 letzte Nachrichten (Inhalt der Website) enthalten: Titel als Link + Veröffentlichungsdatum (Format TT-MM-JJJJ).

Irgendwelche Vorschläge?

5

Der Info-Hook definiert Ihren Block im System:

function my_module_block_info() {    
  $blocks['your_block'] = array(
    // info: The name of the block.
    'info' => t('Your Block Name'),
  );

  return $blocks;
}

und der View-Hook erstellt die Ausgabe (HTML) für Ihren Block:

function my_module_block_view($delta = '') {
  // The $delta parameter tells us which block is being requested.
  switch ($delta) {
    case 'your_block':
      // Create your block content here
      $block['subject'] = t('My last 3 news');

    $query = new EntityFieldQuery();
    //change news by the name of your content type
    $entities = $query->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'news')
    ->propertyOrderBy("created", "DESC")
    ->range(0, 3)
    ->execute();

    $block['content'] = '';

    foreach($entities['node'] as $obj) {
      $node = node_load($obj->nid);
          $block['content'] .= l($node->title, "node/" . $node->nid) . ' - ' . date('d-m-Y', $node->created) . '<br>';
    }

     break;
   }

  return $block;
}

Denken Sie daran, Ihrem Block in YOUR_SITE/admin/content/blocks Eine Region zuzuweisen.

Ausgabe:

(enter image description here

Verweise:

Wie erstelle ich programmatisch einen statischen Block?

10

Sie können dies nicht programmgesteuert tun.

Bei Verwendung von Drupal 7

Laden Sie das Modul Views herunter.

Ansichten aktivieren und Ansichten Benutzeroberfläche

Drupal 8 wird bereits mit aktivierter Benutzeroberfläche für Ansichten und Ansichten geliefert .

Erstellen Sie eine neue Ansicht, deaktivieren Sie die Seitenansicht und wählen Sie Blockansicht

Ansicht von: Inhalt. Für Typ: Wählen Sie Ihren Inhaltstyp aus.

Setzen Sie die Ergebnisse auf 3.

Klicken Sie auf Weiter und Bearbeiten.

Klicken Sie in Feldern auf die Schaltfläche Hinzufügen und suchen Sie nach Erstellungsdatum.

Sie können ändern/formatieren, wie das Datum angezeigt wird. Wenn Sie möchten, können Sie custom verwenden und d-m-Y setzen.

Speichern Sie Ihre Ansicht.

Dann wird in Blöcke Ihr Ansichtsblock dort aufgelistet.

Ich erwähne dies, weil der Fragesteller möglicherweise keine Kenntnis von einer nicht programmatischen Lösung hat

3
user55176

Um die Lösung von Adrian zu vereinfachen. Sie können dies mit Views und etwas Code erreichen. Erstellen Sie eine Ansicht, die die letzten drei Knoten anzeigt, und verwenden Sie dann in Ihrer Funktion block_views die Funktion views_embed_view () , um Ihre Ansicht im Datenteil zu rendern.

Dies erspart Ihnen komplexe Datenbankabfragen und gleichzeitig erreichen Sie Ihren Block programmgesteuert.

case 'top_three_nodes':
            $block['subject'] = t('My Top Three Nodes');


            $block['content'] = array(
                '#theme' => 'your_block_theme_name',
                '#top_three_favorites' => views_embed_view('three_nodes_view_name', 'display_name'),

            );
            return $block;
        break;
2
Shabir A.