[Solved]: Ausblenden von Menüoptionen [Solved]: Ausblenden von Menüoptionen
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

[Solved]: Ausblenden von Menüoptionen

Started by AlexHartmann, August 24, 2009, 03:52:39 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AlexHartmann

Hallo,
in Version 1.4.14 habe ich das Plugin "Menu filter" verwendet, um Menüoptionen auszublenden, da aber immer wieder betont wird, die Finger von "themes.inc.php" lassen, habe ich erst das Plugin "Nosubmenu" ausprobiert, das blendet aber auch die "Suche" aus, was nicht gewollt ist.
"Final Extract" scheint nicht richtig zu funktionieren, da es für alle Gruppen lediglich das Anmeldemenü ausblendet, den Rest aber stehen läßt, was auch nicht der Sinn der Sache ist.
Daher würde ich die Funktion gerne in "theme.php" einbauen (mein Thema basiert auf "fotogallery", zip anbei).
Kann mir jemand sagen, wie ich auf einfache Weise unerwünschte Menü-Optionen entferne?
Alexander

http://www.wissenschaftliches-bildarchiv.de/Archiv/index.php

Αndré

Quote from: AlexHartmann on August 24, 2009, 03:52:39 AM
Kann mir jemand sagen, wie ich auf einfache Weise unerwünschte Menü-Optionen entferne?
So wie schon ein paar dutzend male beschrieben. Du kopierst dir die Buttons aus themes/sample/theme.php in deine theme.php und löschst die ungewollten Einträge einfach:

// Creates an array of tokens to be used with function assemble_template_buttons
// this function is used in this file it needs to be declared before being called.
function addbutton(&$menu,$href_lnk,$href_title,$href_tgt,$block_id,$spacer) {
  $menu[]=array($href_lnk,$href_title,$href_tgt,$block_id,$spacer);
}


// HTML template for sys_menu
$template_sys_menu = <<<EOT
          {BUTTONS}
EOT;

// HTML template for sub_menu
$template_sub_menu = $template_sys_menu;

if (!defined('THEME_HAS_NO_SYS_MENU_BUTTONS')) {

  // HTML template for template sys_menu spacer
  $template_sys_menu_spacer ="::";

  // HTML template for template sys_menu buttons
  $template_sys_menu_button = <<<EOT
  <!-- BEGIN {BLOCK_ID} -->
        <a href="{HREF_TGT}" title="{HREF_TITLE}">{HREF_LNK}</a> {SPACER}
  <!-- END {BLOCK_ID} -->
EOT;

  // HTML template for template sys_menu buttons
    // {HREF_LNK}{HREF_TITLE}{HREF_TGT}{BLOCK_ID}{SPACER}
    addbutton($sys_menu_buttons,'{HOME_LNK}','{HOME_TITLE}','{HOME_TGT}','home',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MY_GAL_LNK}','{MY_GAL_TITLE}','{MY_GAL_TGT}','my_gallery',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MEMBERLIST_LNK}','{MEMBERLIST_TITLE}','{MEMBERLIST_TGT}','allow_memberlist',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MY_PROF_LNK}','{MY_PROF_TITLE}','{MY_PROF_TGT}','my_profile',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{ADM_MODE_LNK}','{ADM_MODE_TITLE}','{ADM_MODE_TGT}','enter_admin_mode',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{USR_MODE_LNK}','{USR_MODE_TITLE}','{USR_MODE_TGT}','leave_admin_mode',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{UPL_PIC_LNK}','{UPL_PIC_TITLE}','{UPL_PIC_TGT}','upload_pic',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{REGISTER_LNK}','{REGISTER_TITLE}','{REGISTER_TGT}','register',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{FAQ_LNK}','{FAQ_TITLE}','{FAQ_TGT}','faq',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{LOGIN_LNK}','{LOGIN_TITLE}','{LOGIN_TGT}','login','');
    addbutton($sys_menu_buttons,'{LOGOUT_LNK}','{LOGOUT_TITLE}','{LOGOUT_TGT}','logout','');
    // Login and Logout don't have a spacer as only one is shown, and either would be the last option.

  $params = array('{BUTTONS}' => assemble_template_buttons($template_sys_menu_button,$sys_menu_buttons));
  $template_sys_menu = template_eval($template_sys_menu,$params);
}

if (!defined('THEME_HAS_NO_SUB_MENU_BUTTONS')) {

  // HTML template for template sub_menu spacer
  $template_sub_menu_spacer = $template_sys_menu_spacer;

  // HTML template for template sub_menu buttons
  $template_sub_menu_button= $template_sys_menu_button;

  // HTML template for template sub_menu buttons
    // {HREF_LNK}{HREF_TITLE}{HREF_TGT}{BLOCK_ID}{SPACER}
    addbutton($sub_menu_buttons,'{CUSTOM_LNK_LNK}','{CUSTOM_LNK_TITLE}','{CUSTOM_LNK_TGT}','custom_link',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{ALB_LIST_LNK}','{ALB_LIST_TITLE}','{ALB_LIST_TGT}','album_list',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{LASTUP_LNK}','{LASTUP_TITLE}','{LASTUP_TGT}','lastup',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{LASTCOM_LNK}','{LASTCOM_TITLE}','{LASTCOM_TGT}','lastcom',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{TOPN_LNK}','{TOPN_TITLE}','{TOPN_TGT}','topn',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{TOPRATED_LNK}','{TOPRATED_TITLE}','{TOPRATED_TGT}','toprated',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{FAV_LNK}','{FAV_TITLE}','{FAV_TGT}','favpics',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{SEARCH_LNK}','{SEARCH_TITLE}','{SEARCH_TGT}','search','');

  $params = array('{BUTTONS}' => assemble_template_buttons($template_sub_menu_button,$sub_menu_buttons));
  $template_sub_menu = template_eval($template_sub_menu,$params);
}

Joachim Müller

Quote from: AlexHartmann on August 24, 2009, 03:52:39 AM
"Final Extract" scheint nicht richtig zu funktionieren, da es für alle Gruppen lediglich das Anmeldemenü ausblendet, den Rest aber stehen läßt
Das ist nicht der Fall. Final extract ist genau der richtige Kandidat für den Job und kann weit mehr als nur einen Menüpunkt deaktivieren.

Wie eenemeenemuu aber schon gesagt hat wurde das schon wahrlich oft genug durchgekaut. Bitte in Zukunft erst ein bißchen die Suche bemühen.

AlexHartmann

Ich hatte bereits versucht, Teile aus themes/sample/theme.php in meine theme.php einzufügen, das Ergebnis war das Gleiche, wie jetzt, nachdem ich den kompletten von eenemeenemuu angegebenen Code eingefügt habe: Es wird gar nichts mehr angezeigt (Datei anbei).
Auch Final extract habe ich implementiert, und das Ergebnis war das beschriebene: Nach dem Setzen der entsprechenden Häkchen in den Kontrollkästchen waren alle abgewählten Menüs noch da, aber der Anmeldelink war, obwohl für alle Gruppen ausgewählt, nicht mehr da, sodaß ich das Plugin löschen mußte, um mich wieder anmelden zu können.

Αndré

Quote from: AlexHartmann on August 24, 2009, 01:40:39 PM
Nach dem Setzen der entsprechenden Häkchen in den Kontrollkästchen waren alle abgewählten Menüs noch da, aber der Anmeldelink war, obwohl für alle Gruppen ausgewählt, nicht mehr da, sodaß ich das Plugin löschen mußte, um mich wieder anmelden zu können.
Vielleicht hast du das Plugin falsch angewendet? Bei allen anderen Personen funkioniert sowohl das Plugin als auch die von mir erwähnte Methode. Wenn du das nicht glaubst, durchsuch bitte das Board ob du evtl. irgendwelche Fehler gemacht hast.

Joachim Müller

zippe Den gesamten Ordner Deines benutzerdefinierten Themes und füge das Zip-Archiv als Anlage zu Deinem Posting an. Lass uns wissen, welche Menüpunkte über die Klinge springen sollen.

AlexHartmann

Für nicht angemeldete Benutzer (also alle außer mir) sollte lediglich "Startseite", "Anmelden" und "Suche" angezeigt werden.
Wenn es eine Möglichkeit gäbe, nach der Anmeldung (durch mich als Admin) noch einmal eine andere Auswahl zu treffen, also z. B. "Am meisten angesehen" anzeigen zu können, wäre das nicht schlecht.

Αndré

Hier der funktionierende Code:
// Creates an array of tokens to be used with function assemble_template_buttons
// this function is used in this file it needs to be declared before being called.
function addbutton(&$menu,$href_lnk,$href_title,$href_tgt,$block_id,$spacer) {
  $menu[]=array($href_lnk,$href_title,$href_tgt,$block_id,$spacer);
}


// HTML template for sys_menu
$template_sys_menu = <<<EOT
          {BUTTONS}
EOT;

// HTML template for sub_menu
$template_sub_menu = $template_sys_menu;

if (!defined('THEME_HAS_NO_SYS_MENU_BUTTONS')) {

  // HTML template for template sys_menu spacer
  $template_sys_menu_spacer ="::";

  // HTML template for template sys_menu buttons
  $template_sys_menu_button = <<<EOT
  <!-- BEGIN {BLOCK_ID} -->
        <a href="{HREF_TGT}" title="{HREF_TITLE}">{HREF_LNK}</a> {SPACER}
  <!-- END {BLOCK_ID} -->
EOT;

  // HTML template for template sys_menu buttons
    // {HREF_LNK}{HREF_TITLE}{HREF_TGT}{BLOCK_ID}{SPACER}
    addbutton($sys_menu_buttons,'{HOME_LNK}','{HOME_TITLE}','{HOME_TGT}','home',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MY_GAL_LNK}','{MY_GAL_TITLE}','{MY_GAL_TGT}','my_gallery',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MEMBERLIST_LNK}','{MEMBERLIST_TITLE}','{MEMBERLIST_TGT}','allow_memberlist',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{MY_PROF_LNK}','{MY_PROF_TITLE}','{MY_PROF_TGT}','my_profile',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{ADM_MODE_LNK}','{ADM_MODE_TITLE}','{ADM_MODE_TGT}','enter_admin_mode',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{USR_MODE_LNK}','{USR_MODE_TITLE}','{USR_MODE_TGT}','leave_admin_mode',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{UPL_PIC_LNK}','{UPL_PIC_TITLE}','{UPL_PIC_TGT}','upload_pic',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{REGISTER_LNK}','{REGISTER_TITLE}','{REGISTER_TGT}','register',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{FAQ_LNK}','{FAQ_TITLE}','{FAQ_TGT}','faq',$template_sys_menu_spacer);
    addbutton($sys_menu_buttons,'{LOGIN_LNK}','{LOGIN_TITLE}','{LOGIN_TGT}','login','');
    addbutton($sys_menu_buttons,'{LOGOUT_LNK}','{LOGOUT_TITLE}','{LOGOUT_TGT}','logout','');
    // Login and Logout don't have a spacer as only one is shown, and either would be the last option.

  //$params = array('{BUTTONS}' => assemble_template_buttons($template_sys_menu_button,$sys_menu_buttons));
  //$template_sys_menu = template_eval($template_sys_menu,$params);
}

if (!defined('THEME_HAS_NO_SUB_MENU_BUTTONS')) {

  // HTML template for template sub_menu spacer
  $template_sub_menu_spacer = $template_sys_menu_spacer;

  // HTML template for template sub_menu buttons
  $template_sub_menu_button= $template_sys_menu_button;

  // HTML template for template sub_menu buttons
    // {HREF_LNK}{HREF_TITLE}{HREF_TGT}{BLOCK_ID}{SPACER}
    addbutton($sub_menu_buttons,'{CUSTOM_LNK_LNK}','{CUSTOM_LNK_TITLE}','{CUSTOM_LNK_TGT}','custom_link',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{ALB_LIST_LNK}','{ALB_LIST_TITLE}','{ALB_LIST_TGT}','album_list',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{LASTUP_LNK}','{LASTUP_TITLE}','{LASTUP_TGT}','lastup',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{LASTCOM_LNK}','{LASTCOM_TITLE}','{LASTCOM_TGT}','lastcom',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{TOPN_LNK}','{TOPN_TITLE}','{TOPN_TGT}','topn',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{TOPRATED_LNK}','{TOPRATED_TITLE}','{TOPRATED_TGT}','toprated',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{FAV_LNK}','{FAV_TITLE}','{FAV_TGT}','favpics',$template_sub_menu_spacer);
    addbutton($sub_menu_buttons,'{SEARCH_LNK}','{SEARCH_TITLE}','{SEARCH_TGT}','search','');

  //$params = array('{BUTTONS}' => assemble_template_buttons($template_sub_menu_button,$sub_menu_buttons));
  //$template_sub_menu = template_eval($template_sub_menu,$params);
}

AlexHartmann

Hervorragend, vielen Dank!
Wie unterscheidet sich der erste Code-Block unterhelb von "// HTML template for template sys_menu buttons" von dem zweiten unterhalb von
"if (!defined('THEME_HAS_NO_SUB_MENU_BUTTONS')) {," den ich jetzt erfolgreich zum Auskommentieren verwendet habe?

Αndré

Ich verstehe deine Frage nicht. Der erste Block ist für das Sys-Menü, der Zweite für das Sub-Menü.

AlexHartmann

Genau das wollte ich wissen, diese Zuordnung war mir nicht klar.
Ich habe versucht, einen Eintrag aus dem Sub-Menu in das Sys-Menü zu kopieren addbutton($sub_menu_buttons,'{TOPN_LNK}','{TOPN_TITLE}','{TOPN_TGT}','topn',$template_sub_menu_spacer);
Trotz Austausch von "sub_menu" durch "sys_menu" schien das nicht zu funktionieren. Es wurde dann sowohl im Sys-Menü als auch im Sub-Menü nur "{TOPN_LNK}" angezeigt.
Geht das irgendwie, einen Eintrag im Sub-Menü auszublenden und ihn dafür im Sys-Menü anzuzeigen?

Αndré

Quote from: AlexHartmann on August 24, 2009, 04:11:58 PM
Geht das irgendwie, einen Eintrag im Sub-Menü auszublenden und ihn dafür im Sys-Menü anzuzeigen?
Ja. Dazu musst du aber die jeweiligen Platzhalter in der Funktion theme_main_menu an die richtige Stelle kopieren. Setz dich doch am besten einfach mal ein bisschen mit dem System auseinander, dann wärst du da auch ganz von allein drauf gekommen.

Deine ursprüngliche Frage ist längst gelöst, weshalb wir dieses Thema wieder einmal sperren müssen ::)