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

[gelöst] inc Datei im Modul einbinden -> bei hok_menu_alter mit drupal_get_path schaffen!

Eingetragen von maen (547)
am 27.03.2014 - 10:00 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo, ich versuche im menu-alter eine inc Datei aus Performance Gründen einzubinden. Code war vorher im Modul selbst und hat funktioniert.

vorher -> erfolgreich

<?php

function my_module_menu_alter(&$items) {
 
$items['user/reset/%/%/%'] = array(
   
'title' => 'Reset password',
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('my_module_user_pass_reset', 2, 3, 4),
   
'access callback' => TRUE,
   
'type' => MENU_CALLBACK,
  );
}

?>

jetzt habe ich den dazugehörigen code in eine inc ausgelagert wie folgt:

<?php

function my_module_menu_alter(&$items) {
 
$items['user/reset/%/%/%'] = array(
   
'title' => 'Reset password',
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('my_module_user_pass_reset', 2, 3, 4),
   
'access callback' => TRUE,
   
'type' => MENU_CALLBACK,
   
'file' => 'my_module.pages.inc',
  );
}

?>

Resultat:
Warning: require_once(XXX//my_module.pages.inc): failed to open stream: No such file or directory in menu_execute_active_handler() (Zeile 515 von XXX/includes/menu.inc).

Habe das aus dem user Module genommen und übeschrieben. In der info der user wurde keien inc deklariert. Cache wurde mehrfach komplett gecleared.

Weiß da einer was?

Danke vorab, Marc

‹ hook_node_view_alter, wie funktioniert der? [gelöst] inc Datei im Modul einbinden -> bei hok_menu_alter mit drupal_get_path schaffen! ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

O.k, manchaml macht schreiben

Eingetragen von maen (547)
am 27.03.2014 - 10:07 Uhr

O.k, manchaml macht schreiben ja klarer: habe den file jetzt mittels:

<?php
'file' =>'sites/all/modules/custom/my_module/my_module.pages.inc',
?>

eingebunden. Finde es aber komisch dass der den kompletten root Pfad benötigt!???

Warum ist das so?

  • Anmelden oder Registrieren um Kommentare zu schreiben

dynamischer file:

Eingetragen von maen (547)
am 27.03.2014 - 10:35 Uhr

<?php

'file' =>drupal_get_path('module','my_module').'/my_module.pages.inc',
?>

funktioniert. Aber dennoch, warum brauche ich den aber im nodes.module vom core ist der nicht notwendig?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi

Eingetragen von Hyp1 (1463)
am 27.03.2014 - 10:41 Uhr

es ist deshalb so, weil der Controller (index.php) die anderen Files einbindet.
Es wird vom WebServer über URL Rewrite immer index.php ausgeführt.
Da diese im Root liegt, ist der Pfad der auch im Root.
Du kannst den Pfad im Modul dynamisch setzen mit:
'file' =>drupal_get_path('module', 'my_module').'my_module.pages.inc',

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

maen schrieb Aber dennoch,

Eingetragen von maen (547)
am 27.03.2014 - 10:50 Uhr
maen schrieb

Aber dennoch, warum brauche ich den aber im nodes.module vom core ist der nicht notwendig?

Danke, aber siehe oben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

habe gerade nochmal

Eingetragen von Hyp1 (1463)
am 27.03.2014 - 11:59 Uhr

habe gerade nochmal nachgesehen.
Du hast Recht eigentlich benötigst man dort kein drupal_get_path.
Es ist schon merkwürdig.

Habe gesehen Du schreibst im my_module.info file ist keine inc deklariert?
Probier einmal das:
Füge ins info ein: files[] = my_module.inc
und dann im Modul 'files' => 'my_module.inc',
In meinem Modul funktioniert es so.

Evtl. hat das auch mit hook_menu_alter zu tun, dieser hook wird sehr spät ausgeführt.
(Da ist das z.B Menü schon geladen und schon evtl. Redirected)
Ich denke Du solltest eher hook_menu verwenden.
hook_menu_alter ist da um bereits vorhandene Menüs/Einträge zu ändern.

Tipp:
suche in modules nach _menu_alter

Hoffe das hilft Dir weiter

LG

PS: sorry habe gerade gesehen ist ja ein vorhandener Menüpunkt den Du ändern willst.
Allerding glaube fest daran, das nach hook_menu_alter alles das meinste schon geladen wurde und deshalb der Pfad auf Root steht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt hab ich es,

Eingetragen von Hyp1 (1463)
am 27.03.2014 - 12:11 Uhr

also das Core Modul ruft Dein Modul auf.
Dein Modul ruft hook_menu auf (hier stimmt der Pfad noch)
und macht den hook_menu_alter dem Core bekannt.
Das Core Modul weiss nun dass es später, wenn alle Module geladen sind hook_menu_alter aufrufen soll.
d.H: Der Core ruft nun die hook_menu_alter Funktion auf und nicht Dein Modul.
Daher ist der Pfad ROOT und nicht der Pfad zu Deinem Modul.

Ich bin fast 100% sicher dass es sich so verhält.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klasse Hypothese. Danke!

Eingetragen von maen (547)
am 27.03.2014 - 12:27 Uhr

Könnte stimmen. Denn wenn ich einen normalen hook_menu schreibe ist das Unsinn. Also liegt das am menu_alter und dem von Dir schön beschriebenen Ablauf. Müsste man irgendwie mal in einem manual hier festhalten!
Da falle bestimmt nicht nur ich drauf rein!

Vielen Dank für die Erklärung!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • anyone has a working Betaflight mirror right now?
    vor 1 Tag 8 Stunden
  • Vielen Dank für Ihren
    vor 1 Tag 12 Stunden
  • Composer ist sehr ratsam
    vor 3 Tagen 11 Stunden
  • Vielen Dank für den
    vor 5 Tagen 21 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 6 Tagen 10 Stunden
  • Gut gemacht
    vor 6 Tagen 10 Stunden
  • Layout Builder etc. z.B. für Landing Pages
    vor 6 Tagen 10 Stunden
  • Links
    vor 1 Woche 2 Tagen
  • Moin,wow, sehr gutes
    vor 1 Woche 3 Tagen
  • Dass ist eine spannende
    vor 1 Woche 3 Tagen

Statistik

Beiträge im Forum: 250314
Registrierte User: 20559

Neue User:

  • Cruzorerm
  • Plandkeews
  • Tepkugem

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 4 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