Support » Themes » Hightide – Mobiles Menü verändern

  • Gelöst Anonymous User 14658531

    (@anonymized-14658531)


    Hallo,
    ich benutze das Hightide Theme, bzw ein Child theme davon. Die Website an der ich gerade arbeite ist http://blog.schwimm-club.de/.
    Das Theme besitz für Mobiles Browsing ein Dropdown Menü. Aktuell wird im Menü immer die Aktuelle Seite angezeigt. Da viele dadurch das Menü „Übersehen“ möchte ich das nun egal auf welcher Seite ich mich befinde, das Wort „Menü“ angezeigt wird. Und wenn ich dann darauf klicke, das normale Menü erscheint, wie jetzt auch.
    Also laut meinen Google recherchen ist es möglich ein Standart anzugeben, bei dropdown-menüs, doch ist es mir nicht gelungen es für mein Theme zu finden.

    MFG Martin

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 20)
  • Edi

    (@psychosopher)

    Das Dropdown-Menü wird vom JavaScript selectnav.js im Verzeichnis /wp-content/themes/hightide/js erstellt. Du müsstest dort die Tags anpassen, die beim Erstellen der Liste vergeben werden (so dass immer nur der erste Punkt als ausgewählt angezeigt wird).

    Einfach so geht das leider nicht.

    Wenn Du nicht weiterkommst, kann ich Dir morgen helfen. Es ist schon etwas spät/früh…

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    Hallo,
    danke für die Hilfe, das File habe ich gefunden, und nun auch in mein Child Theme geladen. Den Standarttext konnte ich nun auch von „- MENU -“ zum deutschen „- MENÜ -“ ändern. Jedoch stehe ich da nun auch vor dem Problem, das „neue“ zu aktivieren. Es wird immer noch das alte menu angezeigt. Wahrscheinlich muss ich in dem File was das menü aufruft noch auf das neue Verlinken.
    doch mein Javascript ist schon etwas eingerostet. ich habe das was ich ändern will in den Kommentaren des Files leider nicht gefunden. Wenn du sagst das wird komplizierter werde ich das wohl ohne hilfe auch nicht schaffen.
    Ich freue mich aber neues zu lernen, und gebe mir mühe alles zu verstehen^^

    Wie wird das Skript denn eingebunden? Ich vermute mal per wp_enqueue_script in der functions.php des Themes. Dann müsstest du es de-enqueuen und dein geändertes Skript dafür enqueuen (in deiner functions.php im Child-Theme).

    Gruß, Torsten

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    wp_enqueue_script( 'hightide_selectnav', get_template_directory_uri() . '/js/selectnav.js', array(), '0.1', true );

    kommentiere ich aus, und füge in der child-functions.php
    folgendes ein:
    wp_enqueue_script( 'hightide_selectnav', get_stylesheet_directory() . '/js/selectnav.js', array(), '0.1', true );

    das funktioniert nicht. Der Browser zeigt das Menü jetzt einfach nicht mehr an.
    Das selectnav.js liegt in meinem childtheme-folder im unterordner js und trägt den namen wie zuvor. laut google bekomme ich durch get_stylesheet_directory() das verzeichnis der .css datei, die auch im childtheme liegt. meine vermutung wäre nun das ich ‚hightide_selectnav‘ ändern muss.

    Ich habe danach nochmal im Originalen geschaut, und festgestellt, das da noch ein function hightide_scripts_styles() { } darum muss, und das ganze über add_action aufgerufen wird, doch auch damit scheint es nicht zu funktionieren.

    Ich mach mal alles wieder so wie es war, damit es wieder funktionier.

    In den developer Tools wird mir angezeigt

    Failed to load resource:
    http://blog.schwimm-club.de/mnt/webl/b3/07/5852107/htdocs/WordPress_01/wp-content/themes/hightide-child/js/selectnav.js?ver=0.1
    Failed to load resource: the server responded with a status of 404 (Not Found)

    … was angesichts des kuriosen Pfads nicht weiter verwunderlich ist.

    Was ich auch nicht verstehe: Du kommentierst im Parent Theme aus? Der Sinn von Child-Themes ist ja gerade, im Parent Theme selbst keine Änderungen vorzunehmen, die ohnehin bei einem Theme-Update überschrieben würden.

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    ich dachte der bekommt das doppelt, wenn ich im Parent nicht auskommentiere. kann ich das einfach stehen lassen? oder muss ich im Parent den Path ändern?

    Also die zweite hälfte des codes den du oben hast sieht gut aus, die frage ist wie ich das erste da weg bekomme.

    Wenn im Parent Theme eine JavaScript-Datei eingebunden wird (und keine Änderung an dieser JavaScript-Datei vorgesehen ist), braucht man im Child Theme einfach nichts zu tun. Oder anders ausgedrückt: In die functions.php eines Child-Themes gehören nur ergänzende Funktionen, aber keine Wiederholungen.

    Möchtest du hingegen eine JavaScript-Datei, die im Parent Theme eingebunden war, ändern, musst du sie zunächst im Child Theme mit wp_dequeue_script() wieder rausschmeißen und kannst dann mit wp_enqueue_script() deine eigene Funktion einbinden.

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    danke für die Info Bego!

    wp_dequeue_script( 'hightide_selectnav', get_template_directory_uri() . '/js/selectnav.js', array(), '0.1', true );
    wp_enqueue_script( 'hightide_selectnav', get_stylesheet_directory() . '/js/selectnav.js', array(), '0.1', true );

    so wäre das dann? Scheinbar funktioniert es auch das alte zu entquen, da ich wenn ich das neue Stylesheet anzeigen lasse das Menü nicht funktioniert. Und das Neue stylesheet scheint nicht aktiviert zu werden.

    Das hatte ich doch auch oben geschrieben:

    Dann müsstest du es de-enqueuen und dein geändertes Skript dafür enqueuen (in deiner functions.php im Child-Theme).

    Wenn du jetzt noch get_stylesheet_directory_uri() statt get_stylesheet_directory() benutzt, dann wird es auch korrekt eingebunden.

    Ersteres gibt den URL-Pfad aus, letzteres den Serverpfad.

    Siehe:
    https://codex.wordpress.org/Function_Reference/get_stylesheet_directory
    https://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri

    Gruß, Torsten

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    wie gesagt mein Javascript ist etwas eingerostet. ich hab jetzt alles, und das child-file wird erkannt, nun zur ursprünglichen fragestellung zurück, wie schaffe ich es das Menü immer angezeigt wird?

    In der Datei http://blog.schwimm-club.de/wp-content/themes/hightide/js/responsive.js wird das obige Skript aufgerufen.

    Wenn ich das richtig sehe, dann rufst du es einfach mit dem Parameter autoselect false auf, siehe: http://lukaszfiszer.github.io/selectnav.js/

    autoselect boolean – instead of explicitly setting an active class, you can let SelectNav.js to automatically determine the active element. Default: true

    Gruß, Torsten

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    Danke, Torstes Post hat es gemacht, einfach nach „autoselect“ in der selectnav.js suchen, und den boolean am Ende ändern.
    Danke für die Hilfe, das Thema ist beendet 🙂

    Edi

    (@psychosopher)

    @bego und @torsten Danke für die Unterstützung! Ich habe mich zwar anerboten, bin dann aber nicht dazu gekommen.

    einfach nach „autoselect“ in der selectnav.js suchen, und den boolean am Ende ändern.

    Das würde ich nicht tun. Damit konservierst du das Skript in deinem Child-Theme. Wenn es bei einem Parent-Theme-Update mal aktualisiert wird, bekommst du ggf. ein Problem. Besser wäre es, wenn du stattdessen den Aufruf in dein Child-Theme packst (und im parent rausnimmst) und dann beim Aufruf den Parameter sauber übergibst (anstatt im Originalskript den Defaultwert zu ändern.)

    Gruß, Torsten

    Thread-Starter Anonymous User 14658531

    (@anonymized-14658531)

    jetzt verstehe ich dich nicht mehr, ich habe doch mit dequery und enquery sauber das neue aufgerufen, und das alte entfernt. Meinst du es wird ein problem, wenn die datei bei einem update umbenannt wird, ich hab das nicht ganz verstanden. Ich habe ja nur das child-script geändert

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 20)
  • Das Thema „Hightide – Mobiles Menü verändern“ ist für neue Antworten geschlossen.