[HomePage :: Erste Schritte :: Alle Einstellungen :: Das System (Einstellungen und Konfiguration) :: Block Manager :: Dieser Seite]  

Block Manager - mit den Blöcken arbeiten

Blöcke
Jedes Modul sowie das Systemmodul liefert Blöcke. Ein Beispiel für einen Block ist z.B. das vom Systemmodul mitgelieferter „Login“ oder „Wer ist online“ Block.

In Blöcken werden modulrelevante Inhalte dargestellt. So verfügt z.B. das Forumsmodul über einen Block „Letzte Forumsbeiträge“ und ein Galeriemodul einen „Aktuelle Bilder“ Block.

Nach der Installation eines Moduls werden können diese Blöcke in dem Block Manager eingeschaltet oder ausgeschaltet werden.

Block Manager
Der Block Manager in der ImpressCMS Version sieht so aus (Hier sind nur die Blöcke des Systemmoduls sichtbar):


- In der Spalte „Sichtbar“ kann man durch das Klicken auf die Symbole einen Block ein- oder ausschalten, d.h. einen Block auf ihrer Webseite sichtbar machen.
- In der Spalte „Name“ steht der Name des Blocks.
- In der „Titel“ Spalte steht der Name/Titel des Blocks. Dieser kann in der Administration des Blocks geändert werden. Der Titel eines Blocks wird im Frontend angezeigt.
- In der „Modul“ Spalte wird angezeigt zu welchem Modul dieser Block gehört.
- „Blockausrichtung“ zeigt an wo dieser Block auf Ihrer Webseite angezeigt wird. Für das Frontend sehen 8 Positionen zur Verfügung
- „Reihenfolge“ bestimmt die Sortierung (von Oben nach Unten) der Blöcke in einen der 8 Positionen im Frontend. Nehmen wir man an Sie schalten 2 Blöcke ein in der Position „Seitenblock - Links“. Erster Block A hat den Wert 0 und der zweite B den Wert 1. Auf Ihrer Webseite im Frontend werden die Blöcke wie folgt sortiert (von oben nach unten): zuerst A dann B.
- In der Spalte „Aktionen“ befinden sich die Grundeinstellungen eines Blocks.
Ändern der „Reihenfolge des Blocks“
Diesen Block klonen. Hilfreich wenn man einen Block mehrmals auf der Webseite anzeigen möchte.
Erweiterte Einstellungen des Blocks

Erweiterte Einstellungen des Blocks()
Diese werde ich jetzt an einem Beispiel erklären. Dazu schauen wir uns den Block „Aktivste Benutzer“ an. Wir gehen nur auf die 6 wichtigen Punkte ein.

Je nach Block können die Einstellungsvarianten variieren. Jedoch liefern alle diese 7 Grundeinstellungen. Das wären: Titel, Blockausrichtung, Reihenfolge, Sichtbar, Block Cache Zeit, Sichtbar in und Block Gruppen-Rechte.

1. Titel: Wie oben schon erwähnt kann der Titel eines Blocks geändert werden. Dieser Titel wird auf ihrer Webseite als Blocküberschrift verwendet.
2. Blockausrichtung: Bestimmt wo dieser Block auf Ihrer Webseite angezeigt wird.
3. Reihenfolge: Sortierung der Blöcke von Oben nach Unten beginnend mit 0 auf der Webseite.
4. Optionen: Diese Optionen gehören nicht zu den Standardoptionen einen Blocks und können je nach Block variieren. In diesem Beispiel kann man z.B. die Anzahl der Benutzer die angezeigt werden festlegen.
5. Sichtbar in: Jeder Block kann nur in bestimmten Modulen und Modulseiten angezeigt werden. So können Sie ein Modul nur auf Ihrer Startseite oder auf allen Seiten anzeigen lassen.
6. Block Gruppen-Rechte: Sie könne festlegen wer diesen Block sehen kann. Je nach der Auswahl der Gruppen wird dieser Block auch nur der bestimmten Gruppe angezeigt.

Block klonen()
Ich werde hier kurz 2 Situationen erklären die ein Klonen eines Blocks verlangen.
1. Block auf einer Seite Ihrer Webseite mehr nur als ein mal anzeigen: Durch das Klonen des Blocks besteht die Möglichkeit einen Block mehr als nur ein Mal auf einer Seite anzeigen zu lassen. So können sie z.B. den Block „Suche“ auf einer Seite einmal in der linken Spalte und ein Mal in der rechten Spalte anzeigen.
2. Einen Block in verschiedenen „Blockausrichtungen“ anzeigen. Dies ist der Fall wenn sie z.B. den Block „Suche“ auf der Startseite in der linken Spalte anzeigen wollen aber auf allen anderen Seiten in der rechten Spalte.

Blockausrichtung im Frontend
Die Option „Blockausrichtung“ bestimmt wo sich der Block auf Ihrer Webseite befindet. Alle neueren Themes bieten 8 Blockpositionen wobei der Standort der einzelnen Blockpositionen von Theme zu Theme variieren kann. Hier der Aufbau eines Standardthemes:


Block Templates
Die Bock Templates sind verantwortlich für den Aufbau und Inhalt des Blocks. Durch das Ändern des Templates kann der Aufbau und Aussehen des Inhaltes eines Blocks geändert werden. Im Block Template wird HTML, CSS und Smarty verwendet um den Inhalt anzuzeigen.
Das Template zum jeweiligen Block befindet sich in folgendem Ordner:Zitat:

/modules/dein_modul/templates/blocks/



Eigenen Block erstellen und im Modul verwenden
Um einen eigenen Block zu erstellen sollte man wenigstens über PHP Grundkenntnisse verfügen. Ich werde hier nur erklären was alles notwendig ist um einen eigenen Block zu erstellen. Als Beispiel nehmen wir den oben erwähnten „Aktivste Benutzer“ Block. Dieser befindet sich im Modul „System“. Folgende Dateien sind für diesen Block relevant (gilt auch für alle anderen Blöcke):Zitat:

/modules/system/icms_version.php
/modules/system/blocks/system_blocks.php
/modules/system/templates/blocks/system_block_topusers.html
/modules/system/language/german/blocks.php



Schauen wir uns zuerst die “icms_version.php” an:
Damit der Block von Modul auch erkannt wird muss dieser in der „icms_version.php“ zuerst definiert werden. Dazu schauen wir uns die Zeilen (ca. 141 bis 148) an:
$modversion['blocks'][] = array(
       'file' => 'system_blocks.php',
       'name' => _MI_SYSTEM_BNAME9,
       'description' => '',
       'show_func' => 'b_system_topposters_show',
       'edit_func' => 'b_system_topposters_edit',
       'options' => '10|1',
       'template' => 'system_block_topusers.html');


Was bedeuten diese Zeilen:
'file' => 'system_blocks.php,': diese Zeile gibt an welche php Datei für unseren Block zuständig ist. Diese Datei befindet sich wie oben schon erwähnt im Ordner „/modules/system/blocks/system_blocks.php“.

'name' => _MI_SYSTEM_BNAME9,: Hier wird definiert wie unser Block heißt.
„_MI_SYSTEM_BNAME9“ findet Ihr in dem language Ordner des Moduls in der modinfo.php
(/modules/system/language/german/modinfo.php)

'description' => '',: Hier könnt ihr eine Beschreibung des Blocks angeben.

'show_func' => 'b_system_topposters_show',: Diese Zeile gibt an welche Funktion für die Ausgabe des Blockinhalt zuständig ist. Diese Funktion befindet sich in „/modules/system/blocks/system_blocks.php“

'edit_func' => 'b_system_topposters_edit',: Oben haben wir die Erweiterten Einstellungen eines Blocks besprochen. Dort haben wir gesehen dass es zu den Standeinstellungen des Blocks zusätzlich noch blockspezifische Einstellungen gibt. Diese werden durch die Funktion „'b_system_topposters_edit'“ angezeigt und verwaltet. Falls Ihr Block über keine zusätzliche Einstellungen verfügt kann diese Zeile auch weggelassen werden.

'options' => '10|1',: Diese Zeile bestimmt die Standardwerte für Ihre zusätzlichen Optionen

'template' => 'system_block_topusers.html': Hier wird das Template welches für den Block zuständig ist festgelegt. Dieses Template findet ihr in /modules/system/templates/blocks/system_block_topusers.html

system_blocks.php
Als nächstes schauen wir uns “ /modules/system/blocks/system_blocks.php“ an. In dieser finden wir die in der icms_xoopsversion.php festgelegten 2 Funktionen. Show Funktion ist zuständig für die Anzeige des Blocks im Frontend.
function b_system_topposters_show($options)
{
      global $icmsConfigUser;
      $block = array();
      $criteria = new CriteriaCompo(new Criteria('level', 0, '>'));
      $limit = (!empty($options[0])) ? $options[0] : 10;
      $size = count($options);
      for ( $i = 2; $i /span> $size; $i++) {
            $criteria->add(new Criteria('rank', $options[$i], '<>'));
      }
      $criteria->setOrder('DESC');
      $criteria->setSort('posts');
      $criteria->setLimit($limit);
      $member_handler =& xoops_gethandler('member');
      $topposters =& $member_handler->getUsers($criteria);
      $count = count($topposters);
      for ($i = 0; $i < $count; $i++) {
            if ( $options[1] == 1 ) {
                  if ($topposters[$i]->getVar('user_avatar') && $topposters[$i]->getVar('user_avatar') != 'blank.gif' && $topposters[$i]->getVar('user_avatar') != ''){
                        $block['users'][$i]['avatar'] = ICMS_UPLOAD_URL.'/'.$topposters[$i]->getVar('user_avatar');
                  } elseif ($icmsConfigUser['avatar_allow_gravatar'] == 1)
{
                        $block['users'][$i]['avatar'] = $topposters[$i]->gravatar('G', $icmsConfigUser['avatar_width']);
                  } else {
                        $block['users'][$i]['avatar'] = '';
                  }
} else {
             $block['users'][$i]['avatar'] = '';
            }
            $block['users'][$i]['id'] = $topposters[$i]->getVar('uid');
            $block['users'][$i]['name'] = $topposters[$i]->getVar('uname');
            $block['users'][$i]['posts'] = $topposters[$i]->getVar('posts');
      }
      return $block;
}



Edit Funktion ist zuständig für das Anzeigen der Optionen in den Einstellungen des Blocks. Für die erweiterten Optionen ist es nicht notwendig die Datenbank zu ändern, das übernimmt das ImpressCMS für euch.
function b_system_topposters_edit($options)
{
      include_once XOOPS_ROOT_PATH.'/class/xoopslists.php';
      $inputtag = "http://www.php.net/intval" target="_blank"><span style="color: #990000;">intval</span></a><span style="color: #009900;">(</span><span style="color: #000088;">$options</span><span style="color: #009900;">[</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #339933;">.</span><span style="color: #0000ff;">"" type="text" />";
      $form = sprintf(_MB_SYSTEM_DISPLAY,$inputtag);
      $form .= "
"
._MB_SYSTEM_DISPLAYA.;
      if ( $options[1] == 1 ) {
            $form .= " checked='checked'";
      }
      $form .= " /> "._YES.";
      if ( $options[1] == 0 ) {
            $form .= " checked='checked'";
      }
      $form .= " /> "._NO."";
      $form .= "
"
._MB_SYSTEM_NODISPGR."
;
      $ranks =& XoopsLists::getUserRankList();
      $size = count($options);
      foreach ($ranks as $k => $v) {
            $sel = "";
            for ( $i = 2; $i < $size; $i++ ) {
                  if ($k == $options[$i]) {
                        $sel = " selected='selected'";
                  }
            }
            $form .= "$k'$sel$v";
      }
      $form .= "";
      return $form;
}



Aktivste Mitglieder Template (modules/system/templates/blocks/system_block_topusers.html)
/span>table cellspacing="1px" class="outer"
  /span>{foreach item=user from=$block.users}
  /span>tr class="<{cycle values="even,odd"}>" valign="middle"
    /span>td align="center"
      /span>{if $user.avatar != ""}
      /span>img src="<{$user.avatar}>" alt="<{$user.name}>'s avatar"width="32px" /><br />
      <{/if}
      /span>a href="<{$xoops_url}/userinfo.php?uid=<{$user.id}>"title="<{$user.name}>">/span>{$user.name}a>
    td>
    /span>td align="center"/span>{$user.posts}td>
  tr>
  /span>{/foreach}
table>

Hier wird durch HTML und Smarty der Inhalt des Blocks welcher die „Show“-Funktion liefert angezeigt.

Sprachvariablen (/modules/system/language/german/blocks.php)
define('_MB_SYSTEM_DISPLAY','Zeige %s Benutzer an');
define('_MB_SYSTEM_DISPLAYA','Profilbilder von Benutzern anzeigen');
define('_MB_SYSTEM_NODISPGR','Zeige keine Benutzer an die folgenden Rang haben:');


Hier befinden sich die Sprachvariablen die in den show- und edit-Funktionen verwendet wurden.
Das sind alle Dateien die für einen Block relevant sind. Nach diesem Muster könnt ihr eure eigenen Blöcke erstellen. Zum besseren Verständnis der Blockfunktionen (show/edit) solltet ihr einen Blick in andere Module und Blöcke werfen.
Diese Seite wurde 2 Mal geändert
Aktualisierung 19.06.2013 von sato-san
Diese Seite wurde erstellt am 02.12.2011 von lotus
Diese Seite wurde 533 Mal angesehen

Kommentar
Die hier veröffentlichten Artikel und Kommentare stehen uneingeschränkt im alleinigen Verantwortungsbereich des jeweiligen Autors.