J'ai créé une page d'accueil statique dans laquelle je charge le contenu de toutes mes pages. Maintenant, j'ai un menu personnalisé normal, mais les liens renvoient aux pages, par exemple: http://example.com/about
Maintenant, je veux que le lien soit dirigé vers la page elle-même avec http://example.com/#about .
J'ai un walker personnalisé que j'utilise et j'ai essayé le code suivant:
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( get_bloginfo('url').'#'.$item->title ) .'"' : '';
Maintenant, cela fonctionne, sauf pour le lien de rattachement lui-même. La page d'accueil contient des liens vers http://example.com/#home , mais il suffit de créer un lien vers http://example.com/#
Y a-t-il autre chose que je pourrais utiliser alors $item->title
pour ajouter.
-
Si vous voulez connaître la méthode que j'utilise pour créer la page unique:
Création de la mise en page html5 css3 moderne 'page unique' dans wordpress
Mise à jour
Je voulais juste vous dire ce que j'ai fait, peut-être que ça aide quelqu'un.
Les pages sont structurées comme ceci:
Home (public) -> cutom menu item -> [link:#][label:home]
portfolio (private) -> cutom menu item -> [link:#portfolio][label:portfolio]
contact (private) -> cutom menu item -> [link:#contact][label:contact]
blog (public) -> page menu item -> [link:blog][label:blog]
Accueil et blog seront indexés et visibles. portfolio et contact sont chargés à la maison qui est un front_page.php.
Notez que j'utilise liens relatifs , et non absolu, la sortie HTML sera href = "# contact".
Ayant maintenant comme cela sera en conflit sur la page du blog, les liens deviendronthttp://example.com/blog/#contact
Nous ne voulons pas cela, nous voulons justehttp://example.com/#contact
Dans mon marcheur par défaut, je vais éditer éditer dans le chemin absolu. Je le fais ici juste pour rendre le modèle un peu plus dynamique.
if($item->object == 'custom'){
$attributes .= ! empty( $item->url ) ? ' href="' .
esc_attr(get_bloginfo('url').'/'.$item->url ) .'"' : '';
}else{
$attributes .= ! empty( $item->url ) ? ' href="' .
esc_attr( $item->url ) .'"' : '';
}
La source de l’ensemble du marcheur peut être trouvée ici: Description du menu? Walker personnalisé pour wp_nav_menu ()
$(document).ready(function() {
$('.menu-item-object-custom a').bind('click', function(e) {
e.preventDefault();
var parts = ($(this).attr("href")).split("#");
var target = '#' + parts[1];
if($('body.home').length){
var moveto = $(target).length ? $(target).offset().top : 0;
$('html, body').stop().animate({ scrollTop: moveto }, 1500, function() {
location.hash = target;
});
return false;
}else{
window.location = $(this).attr("href");
}
});
});
Notez que l'URL dans le navigateur a également été modifiée, de sorte que le bouton Précédent fonctionne également et que les signets sont faciles.
Merci pour toutes les suggestions et l'inspiration ci-dessous !! Et j'espère que quelqu'un pourra l'utiliser.
Aller à
Apparence -> Menus -> Créer un nouveau menu -> Ajouter votre lien en tant que lien personnalisé
Vous pouvez le faire avec JavaScript en retenant les clics dans votre menu et en faisant défiler la page. Voici un exemple d'utilisation de jQuery qui fait correspondre le titre du lien au contenu d'un h1 et lui fait défiler la page.
<script type="text/javascript">
jQuery(document).ready(function($) {
$('ul#main-menu a').click(function(){
thisTitle = $(this).attr('title');
$('html,body').animate({
scrollTop: $("h1:contains('"+ thisTitle +"')").offset().top
},'slow');
return false;
});
});
</script>
votre menu ...
<ul id="main-menu">
<li><a href="/about/" title="About">About</a></li>
</ul>
et ensuite votre titre quelque part sur la page ...
<h1>About</h1>
bien sûr, cela nécessite l'activation de JavaScript, mais vous pouvez configurer votre thème avec un modèle de secours pour rendre vos pages individuelles dans les rares cas où vos visiteurs ne disposent pas de js activé et accèdent directement à la page. Assurez-vous simplement que ces pages ne sont pas indexées par les moteurs de recherche.
La page d'administration du menu de navigation personnalisé vous permet de définir quatre propriétés supplémentaires (accessibles en les activant sous "Options d'écran" en haut de la page):
Mais si vous devez uniquement utiliser la page de couverture en tant qu'exception, n'est-il pas plus simple de vérifier le lien et, s'il s'agit de la page de couverture, de ne pas utiliser le titre?