Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

von Modul erzeugter Block lässt sich nicht verschieben

Eingetragen von Meister Lampe (36)
am 11.12.2010 - 15:49 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo,

ein Komilitone und ich entwickeln derzeit ein eigenes Modul welches ein css dropdown-menu erzeugt. Das Modul als solches arbeitet einwandfrei, allerdings sind wir nun dabei zu dem Modul einen Block zu erstellen, welcher dann frei einer jeweiligen Region zuweisbar sein soll. Der Block an sich ist da.

Nun zu unserem Problem:
wenn ich dem Block eine Region zuweise und auf speichern klicke bekomme ich eine Meldung das alles gespeichert wurde, wenn ich dann allerdings in der Liste schaue hat sich nichts verändert und der Block ist immernoch deaktiviert.

Ich poste hier mal den Code, vielleicht kann ja jemand etwas damit anfagen:

<?php
/*function SimpleTabs_init()
{
  global $user;
  drupal_set_message(nl2br(print_r($user,1)));
}*/
/**
* implementation of hook_perm
*/
function css_dropdown_perm()
{
  return array(
'view SimpleTabs');
}

/**
* implementation of hook_menu
*/
function css_dropdown_menu()
{
   
$items = array();
   
   
$items['admin/settings/css_dropdown'] = array(
       
'title' => 'css_dropdown',
       
'description' => 'Admin Sample Page',
       
'page callback' => 'css_dropdown_admin',
       
'weight' => -50,
       
'access arguments' => array('view css_dropdown'),
       
//'type' => MENU_CALLBACK,
   
);   
   
$items['css_dropdown'] = array(
       
'title' => 'css_dropdown',
       
'description' => 'mache css_dropdown',
       
'page callback' => 'css_dropdown',
       
'access arguments' => array('view css_dropdown')
    );   
  return
$items;
}
function
css_dropdown_admin()
{   
    return
'<hr>admin simple tabs<hr>';
}

function
css_dropdown($mlid = 0)
{
   
drupal_add_css('sites/all/includes/dropdown.css');
   
$page_content = '<div id="menu1">';
   
$page_content .= css_dropdown_menues();
    return
$page_content.'</div>';
   
}
function
css_dropdown_menues($mlid = 0)
{      
   
$page_content = '<ul>';
   
   
$result = db_query("SELECT *FROM {menu_links} WHERE `menu_name` = 'navigation' AND `plid` = %d AND `hidden` = 0 ORDER BY weight ASC;",$mlid);
   
    while(
$link = db_fetch_array($result)) {
       
$page_content .= '<li><a href="#">'.$link['link_title'].'</a>';
        if(
$link['has_children']) $page_content .= css_dropdown_menues($link['mlid']);
       
$page_content .= '</li>';
    } 
    return
$page_content.'</ul>';
}

function
css_dropdown_block($op = 'list', $delta = '', $edit = array()) {
 
// The $op parameter determines what piece of information is being requested.
 
switch ($op) {
    case
'list':
     
// If $op is "list", we just need to return a list of block descriptions.
      // This is used to provide a list of possible blocks to the administrator;
      // end users will not see these descriptions.
     
$blocks['configurable-text'] = array(
       
'info' => t('Example: configurable text string'),
         
'visibility' => '1',
      );
     
// A block can provide default settings. In this case we'll enable the
      // block and make it visible only on the 'node/*' pages.
     
$blocks['empty'] = array(
       
'info' => t('Example: empty block'),
       
'status' => TRUE,
       
'weight' => 0,
       
'visibility' => 1,
       
'pages' => 'node/*',
      );
      return
$blocks;
    case
'configure':
     
// If $op is "configure", we need to provide the administrator with a
      // configuration form. The $delta parameter tells us which block is being
      // configured. In this example, we'll allow the administrator to customize
      // the text of the first block.
     
$form = array();
      if (
$delta == 'configurable-text') {
       
// All we need to provide is a text field, Drupal will take care of
        // the other block configuration options and the save button.
       
$form['block_example_string'] = array(
         
'#type' => 'textfield',
         
'#title' => t('Block contents'),
         
'#size' => 60,
         
'#description' => t('This string will appear in the example block.'),
         
'#default_value' => variable_get('block_example_string',   t('Some example content.')),
        );
      }
      return
$form;
    case
'save':
     
// If $op is "save", we need to save settings from the configuration form.
      // Since the first block is the only one that allows configuration, we
      // need to check $delta to make sure we only save it.
     
if ($delta == 'configurable-text') {
       
// Have Drupal save the string to the database.
       
variable_set('block_example_string', $edit['block_example_string']);
      }
     
#return; // Das muss raus gem. hook_blook API Beschreibung
   
case 'view':
     
// If $op is "view", then we need to generate the block for display
      // purposes. The $delta parameter tells us which block is being requested.
     
switch ($delta) {
        case
'configurable-text':
         
// The subject is displayed at the top of the block. Note that it
          // should be passed through t() for translation.
         
$block['subject'] = t('Title of configurable-text block');
         
// The content of the block is typically generated by calling a custom
          // function.
         
$block['content'] = block_example_contents(1);
          break;
        case
'empty':
         
$block['subject'] = t('Title of block #2');
         
$block['content'] = block_example_contents(2);
          break;
      }
      return
$block;
  }
}
function
block_example_contents($which_block) {
  switch (
$which_block) {
    case
1:
     
// Modules would typically perform some database queries to fetch the
      // content for their blocks. Here, we'll just use the variable set in the
      // block configuration or, if none has set, a default value.
     
return variable_get('block_example_string',   t('A default value.'));

    case
2:
     
// It is possible that your block will not have any content, since it is
      // probably dynamically constructed. In this case, Drupal will not display
      // the block at all.
     
return;
  }
}
?>

Weiß jemand woran es liegen könnte das der Block sich nicht in eine Region verschieben lässt?

LG Meister Lamp

‹ [gelöst] Book.Module Veränderung, damit im Navigationsblock nur das aktuelle Buch angezeigt wird Performance Frage von Datenbank Abfragen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast du schon mal versucht

Eingetragen von netzkoop (1820)
am 13.12.2010 - 11:22 Uhr

Hast du schon mal versucht eine default region vorzugeben?
Und auch wenn Module nur einen Block bereit stellen wird das array eigentlich immer so aufgebaut

$blocks[0] = array(

vielleicht liegt es daran...

Sonst würde ich erstmal den reinen Bsp-Code versuchen.
Theme ist ein Standard Theme?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Theme ist Garland als ja

Eingetragen von Meister Lampe (36)
am 14.12.2010 - 17:02 Uhr

Das Theme ist Garland als ja ein Standardtheme. Als Code haben wir eigentlich fast den originalen BSP Code verwendet. Wir werden das mal als nächstes Prüfen ob wir etwas zu sehr verändert haben.

Immer wenn das Modul testweise aktiviert ist, bekomme ich beim Aufrufen von admin/build/block...
diese Fehlermeldung:

Zitat:

warning: Invalid argument supplied for foreach() in F:\Localhost\xampp\htdocs\drupal\includes\common.inc on line 3389.
warning: array_merge() [function.array-merge]: Argument #2 is not an array in F:\Localhost\xampp\htdocs\drupal\includes\common.inc on line 3272.

Sobald ich das Modul wieder deaktiviert habe, ist der Fehler weg. Vielleicht hilft das ja auch weiter?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du etwa PHP 5.3 in

Eingetragen von wla (9461)
am 14.12.2010 - 19:39 Uhr

Hast Du etwa PHP 5.3 in deiner Installation laufen? Dann ist das die Ursache. Viele Module von Drupal kommen damit noch nicht zurecht. Es sollte noch eine 5.2.x-version sein.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, danke für

Eingetragen von Meister Lampe (36)
am 14.12.2010 - 23:43 Uhr

Hallo Werner,

danke für deinen Hinweis! Ich hab tatsächlich PHP 5.3.1 laufen. Wirkt sich das denn auch auf ein selbst angelegtes neues Modul aus?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du rufst doch offensichtlich

Eingetragen von wla (9461)
am 15.12.2010 - 10:15 Uhr

Du rufst doch offensichtlich irgendwelche Drupal-internen Funktionen auf. Dabei behandelts Du die Übergabeparameter entweder nicht gemäß Dokumentation oder die Übergabe ist nicht konform mit den strikteren Regeln von PHP 5.3. Da mußt du ansetzen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Könnte es denn daran liegen

Eingetragen von Meister Lampe (36)
am 16.12.2010 - 10:51 Uhr

Könnte es denn daran liegen das ich in einer Funktion Rekursion benutze?

<?php
if($link['has_children']) $page_content .= css_dropdown_menues($link['mlid']);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

*push* Weiß keiner einen Rat?

Eingetragen von Meister Lampe (36)
am 20.12.2010 - 13:31 Uhr

*push*

Weiß keiner einen Rat?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 11 Stunden
  • Hey danke
    vor 3 Tagen 6 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 48 Minuten
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 22 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association