Ich schreibe ein benutzerdefiniertes Modul, das einige Javascript- und CSS-Dateien nur in eine Ansichtsseite einfügen muss.
Ich benutze hook_preprocess_page, aber ich kann nicht sagen, ob die aktuelle Seite aus einer Ansicht ist:
function mymodule_preprocess_page(&vars)
{
var_dump($vars); //output: nothings that reference the views!
if([view page])
{
drupal_add_js([...]);
drupal_add_css([...]);
// Rebuild scripts
$scripts = drupal_get_js();
$vars['scripts'] = $scripts;
// Same for css
}
}
Ich weiß, dass ich eine Vorlagendatei (page-my_view_page_path.tpl.php) verwenden könnte, aber js und extra css dürfen nur enthalten sein, wenn mein Modul aktiviert ist. Deshalb möchte ich diese Dinge direkt in meinem Modulcode behalten .
Ideen?
views
7
theming
javascript
Strae
quelle
quelle
Antworten:
views_get_page_view()
findet heraus, welche Seitenansicht derzeit verwendet wird. Wenn NULL zurückgegeben wird, ist die aktuelle Seite keine Ansichtsseite.Die Verwendung von
drupal_add_js()
unddrupal_add_css()
in ahook_preprocess_page()
funktioniert jedoch nicht wie erwartet, da die Variable$script
und die$style
Variablen bereits von festgelegt wurdentemplate_preprocess_page()
. Die Vorlagenvorverarbeitung von Views (siehe Antwort von Jeremy French) ist wahrscheinlich ein besserer Ort, um CSS und JavaScript hinzuzufügen.quelle
HOOK_preprocess_views_view(&$variables)
anstelle eines anderen Views-Template-Preprocess- Hooks zu verwendenHOOK_preprocess_page(&$variables)
. Auf diese Weise können Sie die Ansichten in$variables
und verwendendrupal_add_js()
unddrupal_add_css()
sicher.Es gibt hier einen langen Thread zu Präprozessoren für Ansichten . Dieser Kommentar sieht für mich sehr einfach aus.
quelle
Wenn Sie sich in einer hook_preprocess_page () befinden, verfügt Ihre Ansicht per Definition über eine Seitenanzeige und einen Menüpfad, die eindeutig sein müssen. Sie können dies also tun:
Wenn an diese Seite Argumente übergeben werden, für die Sie Teile benötigen
$_GET['q']
, tun Sie dies stattdessen mit derarg()
Funktion von Drupal :http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg
quelle
Für mich funktioniert dieser:
quelle
Wenn Sie einem bestimmten Rückruf JS oder CSS hinzufügen, sollten Sie Folgendes verwenden
hook_page_build()
:quelle