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

[gelöst]Hook_menü anlegen funktioniert nicht

Eingetragen von th3o2211 (87)
am 21.08.2012 - 11:50 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo,

Erstmal vielen dank, dass ihr euch diese Frage anschaut :-)

Also ich fange gerade an Module zu programmieren und ich habe schon beim einbinden von einem Hook_menü (hoffe ich benutzte den richtigen Ausdruck, falls nicht ich möchte oben neben Hilfe einen zusätzlichen Punkt hinzufügen wo nur ich als admin was machen kann)

Hier sind die besagten Stellen dazu:

<?php

   
function google_wetter_menu() {
       
$items["admin/settings/Google Wetter"] = array(
         
'title'            => 'Google Wetter',
         
'description'      => 'Orte des Wettermoduls einstellen',
         
'page callback'    => 'drupal_get_form',
         
'page arguments'   => array('google_wetter_admin'),
         
'access arguments' => array('administer mm_weather settings'),
         
'type'             => MENU_NORMAL_ITEM,
       );
        return
$items;
}
......

?>

und hier ist dann die entsprechende goole_wetter_admin Funktion:

<?php

function google_wetter_admin() {

 
$form = array();

 
$staedte = db_select("wetterdaten_staedte","staedte")->fields("staedte")->execute()->fetchAssoc();
 
$form['staedte'] = array(
   
'#type' => 'textfield',
   
'#size'=> '120',
   
'#title' => t('St&auml;dte die gelogt werden sollen'),
   
'#default_value' => $staedte['staedte'],
   
'#description' => t("Die St&auml;dte durch <b>|</b> trennen. zB. Berlin|M&uuml;nchen|Frankfurt<br /><a href='../config/system/cron'>Interval (Cron) einstellen</a>"),
   
'#required' => TRUE,
  );
   
//Submit button:
   
$form['submit'] = array(
       
'#type' => 'submit',
       
'#value' => t('Staedte sichern'),
       
'#suffix' => '<br /><br /><br />Aktuelles Wetter:<br />'.$div.'<p style="margin-top: 300px;">Die Datenbank durchsuchen: Module > Weather Log > Hilfe<br /><a href="../help/weather_log">Oder einfach hier klicken.</a></p>'
   
);
  return
$form;
} 

?>

Jetzt zu meinem Problem:

Wenn ich das Modul aktiviere wird dieser Punkt einfach nciht angezeigt und ich weiß nicht wieso. Ich hab jetzt wirklich viel versucht und versucht zu debugen (was ich in drupal einfach nicht wirklich hinbekomme) wäre echt super wenn ihr mal paar kommentare dazu und meinem Problem geben könntet.

Vielen Dank im Voraus

‹ [gelöst]Aus 'type'=>'texfield' Werte auslesen ? Probleme mit Private Files und Anzeige von Bildern bei 6.x ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, kannst du den Pfad

Eingetragen von Cyberschorsch (782)
am 21.08.2012 - 12:13 Uhr

Hallo,

kannst du den Pfad manuell navigieren?

Falls nicht, setze mal testweise access callback auf TRUE.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie schon erwähnt, probier

Eingetragen von Exterior (2903)
am 21.08.2012 - 12:17 Uhr

Wie schon erwähnt, probier mal, den Pfad manuell anzusurfen.

Außerdem, ich weiß nicht, ob das evtl. zulässig ist, aber ein Pfad mit Leerzeichen drin macht mich persönlich stutzig, vielleicht solltest du den Pfad mal auf sowas setzen: "admin/settings/google_wetter".

Und mal den Drupal-Cache leeren (nicht den Browser-Cache).

  • Anmelden oder Registrieren um Kommentare zu schreiben

also ich hab wie du mir

Eingetragen von th3o2211 (87)
am 21.08.2012 - 12:25 Uhr

also ich hab wie du mir empfohlen hast den Pfad auf admin/settings/Google_Wetter gesetzt und so im browser eingegeben ich komme aber nur ins verwaltungsmenü, dort sind alle vorhanden Punkte aufgelistet außer meiner :-)

Cache habe ich mehrmals gelöscht sowohl von drupal auch vom browser....

Liegts vllt komplett am code von mir?

hier ist mal der komplette code:

<?php

   
<?php
   
// $Id$
   
function google_wetter_menu() {
       
$items["admin/settings/Google_Wetter"] = array(
         
'title'            => 'Google Wetter',
         
'description'      => 'Orte des Wettermoduls einstellen',
         
'page callback'    => 'drupal_get_form',
         
'page arguments'   => array('google_wetter_admin'),
         
'access arguments' => array('administer mm_weather settings'),
         
'type'             => MENU_NORMAL_ITEM,
       );
        return
$items;
}


    function
google_weather_get_weather() {
   
   
$api = simplexml_load_string(utf8_encode(file_get_contents(("http://www.google.com/ig/api?weather=".variable_get('google_weather_city',"PLZ")."&hl=de"))));

   
$wetter = array();

   
$wetter['stadt'] = $api->weather->forecast_information->city->attributes()->data;
   
$stadt=explode(",",$wetter['stadt']);
   
$wetter['stadt']=$stadt[0];
   
$wetter['datum'] = $api->weather->forecast_information->forecast_date->attributes()->data;
   
$wetter['zeit'] = $api->weather->forecast_information->current_date_time->attributes()->data;
       
   
$wetter[0]['zustand'] = $api->weather->current_conditions->condition->attributes()->data;
   
$wetter[0]['temperatur'] = $api->weather->current_conditions->temp_c->attributes()->data;
   
$wetter[0]['luftfeuchtigkeit'] = $api->weather->current_conditions->humidity->attributes()->data;
   
$wetter[0]['wind'] = $api->weather->current_conditions->wind_condition->attributes()->data;
   
$wetter[0]['icon'] = $api->weather->current_conditions->icon->attributes()->data;

   
$i = 1;
    foreach(
$api->weather->forecast_conditions as $weather)
    {
       
$wetter[$i]['wochentag'] = $weather->day_of_week->attributes()->data;
       
$wetter[$i]['zustand'] = $weather->condition->attributes()->data;
       
$wetter[$i]['tiefsttemperatur'] = $weather->low->attributes()->data;
       
$wetter[$i]['hoechsttemperatur'] = $weather->high->attributes()->data;
       
$wetter[$i]['icon'] = $weather->icon->attributes()->data;

       
$i++;
    }

   
$output = '<div style="font-size:12pt;">'.$wetter['stadt'].', '.date("d.m.Y",strtotime($wetter['datum'])).'</div>
    <div style="width:35%;float:left;"><img title="'
.$wetter[0]['zustand'].'" width="60" src="http://www.google.com/'.$wetter[0]['icon'].'"/></div>
    <div style="width:65%;float:right;text-align:right;"><span style="font-size:28pt;">'
.$wetter[0]['temperatur'].'&deg; C</span></div>
    <br clear="all">
    <div style="width:100%;">'
;
    for(
$i=2;$i<=4;$i++) {
       
$output.='
        <span style="margin-right:10px;"><img title="'
.$wetter[$i]['zustand'].'" src="http://www.google.com'.$wetter[$i]['icon'].'" width="20"></span>
        <span>'
.$wetter[$i]['wochentag'].'</span>
        <span>'
.$wetter[$i]['tiefsttemperatur'].' - '.$wetter[$i]['hoechsttemperatur'].'&deg; C</span>
        <br/>'
;
    }
       
$output.='</div>';

    return
$output;
}

function
google_wetter_admin() {

 
$form = array();

 
$staedte = db_select("wetterdaten_staedte","staedte")->fields("staedte")->execute()->fetchAssoc();
 
$form['staedte'] = array(
   
'#type' => 'textfield',
   
'#size'=> '120',
   
'#title' => t('St&auml;dte die gelogt werden sollen'),
   
'#default_value' => $staedte['staedte'],
   
'#description' => t("Die St&auml;dte durch <b>|</b> trennen. zB. Berlin|M&uuml;nchen|Frankfurt<br /><a href='../config/system/cron'>Interval (Cron) einstellen</a>"),
   
'#required' => TRUE,
  );
   
//Submit button:
   
$form['submit'] = array(
       
'#type' => 'submit',
       
'#value' => t('Staedte sichern'),
       
'#suffix' => '<br /><br /><br />Aktuelles Wetter:<br />'.$div.'<p style="margin-top: 300px;">Die Datenbank durchsuchen: Module > Weather Log > Hilfe<br /><a href="../help/weather_log">Oder einfach hier klicken.</a></p>'
   
);
  return
$form;
}


?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast du denn die Berechtigung

Eingetragen von Exterior (2903)
am 21.08.2012 - 12:35 Uhr

Hast du denn die Berechtigung "administer mm_weather settings" mittels hook_permission erzeugt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gute Frage..

Eingetragen von th3o2211 (87)
am 21.08.2012 - 12:39 Uhr

Ok nein ich denke nicht. Ich hab oben den kompletten Code in der .modul geschrieben. Wie mach ich dass denn? Kannst du mir das bitte mal kurz als beispiel zeigen? wenns nichts ausmacht

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du machst oben ein <?php zu

Eingetragen von Exterior (2903)
am 21.08.2012 - 12:47 Uhr

Du machst oben ein <?php zu viel auf, kann das sein?

Ansonsten müsste z. B. das hier rein:

<?php
function google_wetter_permission() {
  return array(
   
'administer mm_weather settings' => array(
     
'title' => t('Administer MM-Weather-Settings'),
     
'description' => t('Perform administration tasks for my module.'),
    ),
  );
}
?>

Das fügst du ein und leerst den Drupal-Cache.

Heißt deine Modul-Datei auch google_wetter.module?

  • Anmelden oder Registrieren um Kommentare zu schreiben

nein der obere Tag ist von

Eingetragen von th3o2211 (87)
am 21.08.2012 - 12:51 Uhr

nein der obere Tag ist von dem einfügen von hier ich hab gerade nochmal nachgeschaut.

ok ich probiers mal. Vielen dank für das Beispiel. :-)

Nein es heißt mm_weather.module
Oder soll ich es umbenennen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok habs mal eingefügt und den

Eingetragen von th3o2211 (87)
am 21.08.2012 - 12:56 Uhr

ok habs mal eingefügt und den cache geleert immer noch nichts da. Ich bin momentan echt mit meinem Latein am Ende...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die hooks müssen schon mit

Eingetragen von Exterior (2903)
am 21.08.2012 - 13:09 Uhr

Die hooks müssen schon mit dem Modul-Namen übereinstimmen. Und Modulname == Dateiname. Du brauchst in deinem Fall also eine mm_weather.module und eine mm_weather.info

Und die Hooks müssen dann natürlich nicht google_wetter_menu heißen, sondernmm_weather_menu, sonst kann das gar nicht klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Anfängerfehler

Eingetragen von th3o2211 (87)
am 21.08.2012 - 13:17 Uhr

Tja so ist das wenn man sich die sachen ohne Lernmaterial beibringt. Klar jetzt wo du das sagst klingts logisch habs geändert und zack da ist das Ding. Ich glaube ich muss mir mal das Pro. Drupal7 Development besogen. Oder kennst du vllt eine deutsch Sprachige version davon? Wenn nicht schlimm ist es nciht, soviel englisch kann ich :-)

Danke aber für deinen Lebensrettenden Tipp

  • 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 40 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