Du inkluderar inte direkt "inkludera" en PHP -fil på samma sätt som du skulle göra i ett standard PHP -skript inom en Drupal -sida återuppringning. Drupals teman och modulsystem hanterar inkludering av filer på ett mer strukturerat och organiserat sätt. Direkt inklusive en PHP -fil som använder "inkludera" eller "kräver" inom en siduppringning är i allmänhet avskräckt eftersom den kringgår Drupals cachemekanismer och kan leda till inkonsekvenser och säkerhetssårbarheter.
Här är lämpliga sätt att integrera funktionaliteten för en PHP -fil i en Drupal -sidåteruppringning:
1. Använda en funktion inom en anpassad modul:
Detta är den bästa och rekommenderade metoden. Skapa en anpassad modul, placera din PHP -kod (innehåller funktioner) i en ".module" -fil och ring sedan dessa funktioner från din siduppringning.
* `MyModule.Module`:
`` `php
php
/**
* Implementerar hook_menu ().
*/
funktion myModule_menu () {
$ artiklar ['myModule/myPage'] =array (
'Titel' => 'min sida',
'Page Callback' => 'MyModule_Mypage_Callback',
'Access Arguments' => Array ('Access Content'),
);
returnera $ artiklar;
}
/**
* Sidan återuppringning för MyModule/MyPage.
*/
funktion myModule_mypage_callback () {
$ output =myModule_helper_function (); // Ring en hjälpfunktion
return array ('#markup' => $ output);
}
/**
* Helper -funktion för att hantera logik från din ursprungliga PHP -fil.
*/
funktion myModule_helper_function () {
// Din kod från den ursprungliga PHP -filen går hit.
$ data =[1,2,3,4,5];
$ sum =array_sum ($ data);
returnera "
Summan av matrisen är:". $ Sum."
";
}
`` `
* Förklaring:
* Vi definierar ett menyalternativ (`myModule_Menu ()`) som pekar på vår sida återuppringning (`mymodule_mypage_callback ()`).
* Sidåteruppringningen använder en hjälpfunktion (`myModule_helper_function ()`) för att kapsla in logiken från din ursprungliga PHP -fil. Detta håller din siduppringning ren och fokuserad.
* `'#Markup' -Render -arrayelementet används för att mata ut resultatet.
2. Använda en temfunktion (för tema aspekter):
Om din PHP -fil främst hanterar presentationslogik, kan du överväga att placera dess kod i en temfunktion.
* `myteme.teme` (inom ditt temas mapp):
`` `php
php
/**
* Implementerar hook_preprocess_page ().
*/
funktion myteMe_preprocess_page (&$ variabler) {
$ variabler ['my_data'] =myteme_get_data ();
}
/**
* Hjälperfunktion för att hämta data. Den här funktionen skulle innehålla koden från din ursprungliga fil.
*/
funktion myteMe_get_data () {
// Din kod från den ursprungliga PHP -filen går hit (datahämtning osv.).
returnera "data från min temafunktion";
}
`` `
* sedan i din mallfil (t.ex. `page.tpl.php`):
`` `php
php tryck $ my_data; ?>
`` `
3. Inklusive kod i ett anpassat block (mindre rekommenderat):
Även om det är möjligt är att skapa ett anpassat block för att hålla koden från din ursprungliga PHP -fil i allmänhet mindre strukturerad än att använda en modul. Det är lämpligt endast för mycket enkla fall. Du skulle fortfarande behöva använda Drupals Rendering API inom det anpassade blocket.
Viktiga överväganden:
* Säkerhet: Sanera och validera alltid alla data du använder från den medföljande filen för att förhindra skript på tvärsidan (XSS) och andra sårbarheter.
* Drupals API: Använd Drupals API:er (t.ex. databasåtkomstfunktioner, formulär API) istället för att direkt interagera med databasen eller formulärerna i din inkluderade fil. Detta säkerställer kompatibilitet och säkerhet.
* caching: Drupals cachningssystem fungerar inte korrekt om du direkt inkluderar filer i din siduppringning. Att använda funktioner inom moduler eller temafunktioner gör det möjligt för Drupals cachemekanismer att fungera effektivt.
Den första metoden (med hjälp av en anpassad modul med hjälpfunktioner) är starkt att föredra för underhåll, säkerhet och integration med Drupal -ekosystemet. Undvik direkt inkludering av PHP -filer inom sidåteruppringningar när det är möjligt.