Support » Allgemeine Fragen » target=“top“ im Menü

  • Gelöst weitms

    (@weitms)


    Hallo,
    ich muß bei einigen Menüpunkten (Hauptmenü) target=“_top“ einfügen.
    Target =_blank“ gibt es ja (Haken bei „Link in einem neuen Tab öffnen“ setzen). Ich benötige es aber für target=“_top“.
    Hat jemand eine Idee wie ich das realisieren kann?

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • von ‚visuell‘ zu ‚text‘ wechseln und da in den Quelltext rein schreiben.

    Thread-Starter weitms

    (@weitms)

    Vielen Dank für deine Antwort, aber bei dem Menüpunkten des Hauptmenüs (Design -> Menüs) kann man leider nicht von visuell zu text wechseln.

    Design > Menüs > Menü erstellen/auswählen > Individuellen Link einfügen > http:// ersetzen mit #top, Linkbezeichnung „nach oben“ eingeben, zum Menü hinzufügen, Menü speichern, ggf. noch als Wigdet „Navigationsmenü“ dem Widgetbereich der Fußzeile hinzufügen.

    Es gibt einige Plugins, die den „nach oben“-Link mit einer sanften Scroll-Annimation (jQuery/JavaScript) versehen.

    Thread-Starter weitms

    (@weitms)

    Danke, aber ich möchte keinen Link nach oben einfügen.
    target=“_top“ ist kein html-Element für einen „nach oben“-Link, sondern das target-Attribut legt die Zielfensterbasis eines Verweises fest (ganzes Fenster) genauso wie der fest hinterlegte „Link in einem neuen Tab öffnen“ (neuer Tab oder Fenster) auf der Seite.
    Und da muße ich für einen Navigationspunkt das target-Attribut target=“_top“ festlegen, kein scroll-Element.
    Beispiel:
    a href=“http://www.example.com/besipiel/&#8220; target=“_top“>Ausdruck</a

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von weitms.

    Ups, peinlich … da habe ich etwas kräftig durcheinander gebracht. Entschuldigung.

    Allerdings werden iframes nur noch äußerst selten eingesetzt, die Verwendung des Linkziels target="_top" ist entsprechend selten.

    Die Entwickler haben sich entschieden, für eigene Navigationsmenüs nur das Linkziel target="_blank" anzubieten, dass du hinzufügen kannst, wenn du zuerst das Auswahlfeld im Pulldownmenü „Ansicht anpassen“ (oben rechts) eingefügt hast. Der damals Leitende Entwickler Andrew Nacin hat eine Funktion angeboten, mit der du allen Links, für die nicht bereits target="_blank" gesetzt ist, das Attribut target="_top" hinzufügen kannst:

    function nacin_filter_menu_target_sorry_world( $menu_item ) {
        if ( ! is_admin() && empty( $menu_item->target ) )
            $menu_item->target = '_top';
        return $menu_item;
    }
    add_filter( 'wp_setup_nav_menu_item', 'nacin_filter_menu_target_sorry_world' );

    Als Workaround kannst du diese Funktion so umwandeln, dass statt des Attributs target="_blank" das Attribut target="_top" verwendet wird:

    function nacin_filter_menu_target_sorry_world( $menu_item ) {
        if ( ! is_admin() && '_blank' == $menu_item->target )
            $menu_item->target = '_top';
        return $menu_item;
    }
    add_filter( 'wp_setup_nav_menu_item', 'nacin_filter_menu_target_sorry_world' );

    Du könntest also in Design > Menüs unter Ansicht anpassen (oben rechts) das Feld „Linkziel“ aktivieren und anschließend bei den gewünschten Links ein Häkchen unter „Link in einem neuen Tab öffnen“ setzen. Die zuletzt genannte Funktion ersetzt _blank mit _top.

    Für weitergehende Änderungen am Navigationsmenü müsstest du einen „Custom Walker“ programmieren, was hier etwas den Rahmen sprengt.

    Thread-Starter weitms

    (@weitms)

    Hallo vielen Dank für deine ausführliche Antwort 🙂
    Habe ich das richtig verstanden, dass ich den Quellcode austausche und dann steht mir bei der Navigation target = ‚_top‘ und nicht mehr target = ‚_blank‘ zur Verfügung?
    Oh. Das wäre ja auch nicht der Weg, denn ich benötige beide Möglichkeiten…
    target = ‚_blank‘ wird ja auch oft benötigt.
    Kann man target = ‚_top‘ nicht als zusätzliches Feld ergänzen?
    Ich kann das leider nicht.
    Wäre das sehr aufwendig?

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von weitms.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von weitms.

    Mit der Funktion kannst du auch einzelnen Menü-Einträgen target="_top" zuweisen:

    function weitms_filter_menu_target( $menu_item ) {
        $pages = array( 'Impressum', 'Datenschutzerklärung', 'AGB' );
        if ( ! is_admin() && empty( $menu_item->target ) ) {
            if ( in_array( $menu_item->title , $pages ) ) {
                  $menu_item->target = '_top';
            }
        }
        return $menu_item;
    }
    add_filter( 'wp_setup_nav_menu_item', 'weitms_filter_menu_target' );

    In Zeile 2 werden die Seitentitel aufgeführt, für die das Linkziel hinzugefügt werden soll, hier also Impressum, Datenschutzerklärung und AGB. Dabei wird der „Angezeigte Name“ der Links verwendet; wenn du eine Seite „Allgemeine Geschäftsbedingungen“ erstellst, im Menü aber als angezeigter Name das kürzere „AGB“ einfügst, fügst du in Zeile 2 auch „AGB“ ein. Das Feld „Seite in neuem Fenster öffnen“ darf nicht angeklickt sein, da der Link nur ein Linkziel – _top oder _blank – haben kann.

    Die Funktion solltest du in einem Child Theme einfügen oder du verwendest das Plugin Code Snippets und erstellst für den Code ein neues Snippet.
    Hilft dir das weiter?

    Thread-Starter weitms

    (@weitms)

    Klasse, es funktioniert! Vielen Dank für deine Hilfe!!!

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von weitms.
Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Das Thema „target=“top“ im Menü“ ist für neue Antworten geschlossen.