[gelöst] hook_preprocess_views_view :: Wie entfehrne ich ein area_text_custom?
Eingetragen von 1kubik (903)
am 19.11.2015 - 21:19 Uhr in
am 19.11.2015 - 21:19 Uhr in
Hallo und Guten Tag
Ich habe eine View mit einem area_text_custom im Header.
Diesen möchte ich jetzt per Code entfehrnen:
<?php
/* Header: Global: Unfiltered text */
$handler->display->display_options['header']['area_text_custom']['id'] = 'area_text_custom';
$handler->display->display_options['header']['area_text_custom']['table'] = 'views';
$handler->display->display_options['header']['area_text_custom']['field'] = 'area_text_custom';
$handler->display->display_options['header']['area_text_custom']['content'] = 'FOO';
$handler->display->display_options['defaults']['fields'] = FALSE;
?>
eigendlich ja kein Problem mit
hook_preprocess_views_view
aber es will mir nicht gelingen.
In der View finde ich den
header["area_text_custom"]
an 2 Stellen:
<?php
function q_show_preprocess_views_view(&$vars) {
//dsm($vars['view'];
if ($vars['view']->name == "myView") {
//greift nicht
unset($vars['view']->header["area_text_custom"]);
//greift auch nicht
unset($vars['view']->display["page"]->display_options["header"]["area_text_custom"]);
}
}
?>
cache habe ich geleert..
was mache ich falsch?
- Anmelden oder Registrieren um Kommentare zu schreiben
Moinsen, 1kubik schrieb was
am 21.11.2015 - 19:18 Uhr
Moinsen,
was mache ich falsch?
das Problem ist, dass die "Global Fields" nicht wie "normale View Felder" behandelt werden. Deshalb kommst du mit hook_preprocess_views_view() nicht ran. Eine Lösung des Problems wäre beispielsweise hook_views_post_execute():
<?php
function hook_views_post_execute(&$view) {
//dpm($view);
unset($view->display[$view->current_display]->handler->handlers['header']['area_text_custom']);
}
?>
Wenn du den Feld Wert überschreiben willst, setzt du:
<?php
$view->display[$view->current_display]->handler->handlers['header']['area_text_custom']->options['content'] = 'mein neuer Wert';
?>
Vielen dank für deine
am 25.11.2015 - 10:58 Uhr
Vielen dank für deine Antwort!!!
Das hat mir schon mal sehr geholfen..
Weisst Du auch wie das mit den Handlern ist?
Da bekomme ich das auch nicht raus
zb muss ich die draggableviews Pfad und rollenspezifisch deaktivieren
in der hook_views_post_execute erscheint der Handler an ziemlich vielen Stellen.
aber nichts greift
<?php
function myMod_views_post_execute(&$view) {
unset($view->display_handler->options["fields"]["draggableviews"]);
unset($view->display_handler->view->display["display"]->default->display_options["fields"]["draggableviews"]);
// $view->current_display = "block";
unset($view->display[$view->current_display]->handler->view->display_handler->display->display_options['fields']['draggableviews']['draggableviews']);
}
?>
dpm() geht hier nicht genug
am 25.11.2015 - 22:11 Uhr
dpm($view) geht hier nicht genug in die Tiefe. Lass dir mal :
dpm($view->display[$view->current_display]->handler->handlers);
ausgeben. Dann kannst du dich weiter durchhangeln. Für deinen Fall müsste es:
$view->display[$view->current_display]->handler->handlers['field']['draggableviews']
sein. Also:<?php
function hook_views_post_execute(&$view) {
global $user;
//z.Bsp.: keine draggable view für admins
if(in_array('administrator', $user->roles)) {
unset($view->display[$view->current_display]->handler->handlers['field']['draggableviews']);
}
}
?>
Davon mal abgesehen hat draggable views ohnehin einen rollenbasierten Zugang. Siehe User -> Berechtigungen.
super!!! Danke für Deine
am 13.12.2015 - 14:23 Uhr
super!!!
Danke für Deine Hilfe!!