it-swarm.dev

Jak používat div -ids v url ke skoku na konkrétní místo ... Je koncové lomítko viníkem?

Některé odkazy na mých stránkách přivedou uživatele na konkrétní příspěvek v kontextu na stránce kategorie .

V jiných lokalitách než WP to lze snadno dosáhnout zahrnutím #example-div-id do adresy URL takto:

http://www.example.com#example-div-id

Ale v prostředí WP tato adresa URL nefunguje :

http://www.example.com/?cat=15#post-170

Toto (nesprávně) přeskočí okno prohlížeče na konec stránky.

Ale to funguje ... ručním odebráním koncové lomítko po načtení stránky a znovu načtení stránky. Okno prohlížeče přeskočí na příslušný div nebo příspěvek.

http://www.example.com?cat=15#post-170.

Ví někdo, proč je to? Nebo jak se dostat WP, aby se odstranila koncová lomka? Je bezpečné odstranit zadní lomítko?

Aktualizace

Snažil jsem se použít EAMann řešení níže, provádění docela permalinks usnadnit ukotvení skoku. Dosažené výsledky zcela rozdělily mé post-order a vyloučení kategorií dítěte. Moje navigace je založena na kategorii. Nepoužívám stránky, ale v navigaci používám názvy kategorií. Každá „stránka“ je opravdu archiv kategorie zobrazující příspěvky z dané kategorie. To, co jsem četl o permalinkech počínaje% kategorií%, mě vede k tomu, abych se vyhnul permalinkům dohromady. Určitě nechci začít permalink s rokem nebo poštou id. Na mých stránkách to nedává smysl.

http://www.example.com/category/my-category vypadá více profesionálně a "normálně" než http://www.example.com/2009/my-category když zamýšlená iluze je, že názvy kategorií jsou skutečně stránky na tomto obchodním webu.

Takže bych ocenil další vysvětlení, proč nefunguje kotvení na lyžích.

Aktualizovat # 2

(v reakci na komentář EAMann přímo na OP) Moje stránky jsou obchodní webové stránky, které z větší části zobrazuje statický obsah. Několik oblastí představoval portfolio práce a tam je blog sekce. Místo používá navigaci založenou na kategorii. Veškerý obsah stránek je psán jako příspěvky. Každý příspěvek je přiřazen kategorii, která určuje, kde je příspěvek zobrazen. Navigační menu webu je vytvořeno pomocí wp_list_categories(). Kliknutím na kategorii se otevře archiv kategorie, který obsahuje všechny příspěvky z dané kategorie.

Momentálně používám výchozí strukturu permalinků.
http://www.example.com/?cat=15 zobrazuje stránku kategorie.

Aktualizovat # 3

Po dalším vyšetřování se zdá, že jQuery plugin "innerfade", který používám k zobrazení prezentace v horní části stránky, je viníkem. Nemá to nic společného s lomítkem. Promiň, že jdu špatnou cestou.

Pokud jsem komentář mimo php, který obsahuje soubor plugin js, a kotva skok funguje v pohodě. Hádám, že některá manipulace s obsahem JavaScriptu na stránce je skok. Pracoval jsem na problému pomocí $(window).scrollTo();.

Oceňuji čas každého.

1
kevtrout

Jak jsem uvedl v aktualizacích mé otázky ... další javascript pracující na stránce je v rozporu s kotevním skokem. Implimentedmorejs pro práci kolem konfliktu. Adresa url vypadá téměř stejně jako předtím, ale s názvem parametru vloženým před symbol libry,

http://www.example.com/?cat=15&hi=#post-170

ale používám jQuery-Howto's 'plugin' pro získání url parametrů.

$.extend({
    getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.Push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
},
getUrlVar: function(name){
            return $.getUrlVars()[name];
        }
});

Načítám číslo příspěvku přiřazeného parametru 'hi' url a přejděte na 20px nad příspěvkem se stejným ID.

 //'hi' var used to jump to anchor          
    var hi = $.getUrlVar('hi');

    if  ( hi ) {
        //scroll to link or search results if url var 'hi' is present
        $(window).scrollTop($(hi).position().top-20); 

jquery plugin kód a můj vlastní kód výše jít v mém souboru javascript, který je obsažen v header.php

0
kevtrout

Nejprve bych doporučil použít " docela permalinks " přes výchozí strukturu dotazu-řetězec. To odstraní většinu vašich problémů z getga. To změní váš http://www.example.com/?cat=15#post-170 urls do http://www.example.com/category/category-slug/#post-170 a prohlížeč se bude pohybovat správně na pozici postu na stránce.

To řekl ... Ano, můžete odstranit zadní lomítko. Trik spočívá v přidání pravidla do souboru .htaccess:

#remove trailing slashes
RewriteCond %{HTTP_Host} ^(www.)?yourdomain\.com$ [NC]
RewriteRule ^(.+)/$ http://%{HTTP_Host}/$1 [R=301,L]

(Toto je převzato z tutoriálu Drupalu který dělá totéž ...)

2
EAMann