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 - 09: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 - 09: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 - 09: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 - 09: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 - 09: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 - 10: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 - 11: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 - 11: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

  • 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 1 Woche 6 Tagen
  • Hey danke
    vor 2 Wochen 7 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 2 Tagen
  • In der entsprechenden View
    vor 3 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 2 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 7 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» 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 21 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