Autor Zpráva
tereza789
Profil
Dobrý den,

když mám na webu psaném v Nette podstránku "služby" a na této podstránce několik záložek například "marketing, webdesign, hosting." Potřebuji mít pro každou záložku jiný description, title a keywords, bude to možné provést?

url jednotlivých záložek budou vypadat zhruba takto:
www.mojefirma.cz/sluzby#marketing
www.mojefirma.cz/sluzby#webdesign
www.mojefirma.cz/sluzby#hosting

Děkuji předem za rady:-)
tpmar
Profil
Sepsal jsem na rychlo, snad nikde nemám žádnou chybu. U mně to ale jelo správně :)

<html>
<head>
    <title>Stránky</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta charset="UTF-8">
    <style type="text/css">

    html, body {
        height: 100%;
        margin: 0;
        padding: 0;
    }

    section {
        height: 100%;
        border: 1px solid;
    }

    </style>

    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
    $().ready(function() {

        var originalTitle = $(document).attr("title");
        var metaTags = [];
        var arr = $("section").map(function() {
            return this.id;
        })

        $(window).scroll(function() {
            var fromTop =  $(this).scrollTop();
            var cur = $.map(arr, function(val) {
                if($("#"+val).offset().top <= fromTop) {
                    return val;
                }
            })

            cur = cur[cur.length - 1];

            switch(cur) {
                case "marketing":
                    metaTags = {
                        title : "Marketing | ",
                        description : "Něco o marketingu.",
                        keywords : "Tagy"
                    };
                    break;
                case "webdesign" : 
                    metaTags = {
                        title : "Webdesign | ",
                        description: "Něco o webdesignu",
                        keywords : "Tagy"
                    };
                    break;
                case "hosting" : 
                    metaTags = {
                        title: "Hosting | ",
                        description : "Něco o hostingu",
                        keywords: "Tagy"
                    };
                    break;
            }


            $(document).attr("title", metaTags.title + originalTitle );
            $('meta[name=description]').attr('content', metaTags.description);
            $('meta[name=keywords]').attr('content', metaTags.keywords);
        })
    })
    </script>
</head>
<body>
<section id="marketing">Marketing</section>
<section id="webdesign">Webdesign</section>
<section id="hosting">Hosting</section>
</body>
</html>

No ale nevím jak moc účinné.
Chamurappi
Profil
Reaguji na terezu789:
Potřebuji mít pro každou záložku jiný description, title a keywords
Myslíš, že pak ve výsledcích vyhledávání bude hlavní odkaz mířit přímo na kotvu? To jsem ještě neviděl. K čemu by vyhledávači byla metadata o kotvě, když na ni neumí poslat návštěvníka?
Krom toho <meta name="keywords"> už je ohromně dlouho k ničemu.

Pro úplnost zmíním, že minimálně Google podporuje konvenci hashbang – když najde odkaz na #!kotvu, zkouší poslat požadavek na ?_escaped_fragment_=kotvu, kde očekává, že bude stránka ve stejném stavu, jako když přijde uživatel s JS na #!kotvu. Ale tento postup je určený primárně pro AJAXové aplikace, ne pro weby, kde je všechno vidět na jedné stránce.

Mimochodem, autoři webů, na které odkazuješ takhle v diskusi, musí být nadšení… používej laskavě example.com, který je na ukázkové adresy určený.


Reaguji na tpmara:
No ale nevím jak moc účinné.
Vůbec nijak*. Robot vyhledávače samozřejmě uvedený skript nikdy nevykoná.
Krom toho … k čemu jQuery, k čemu <section>, proč se do metaTags přiřazuje [], proč porovnávat scrollTop() s offset().top (který vzniká sečtením dvou hodnot, z nichž jedna je scrollTop), proč $(document).attr("title") když title na objektu document není atribut…

*) Myšleno z hlediska SEO. Z pohledu uživatele bude viditelná změna <title> – to nějaké plus je.
tpmar
Profil
Chamurappi:
Já si to myslel, že google to neuvidí, čekal jsem až se ozveš a opravíš mě :-)

A teď na mou obhajobu. Proč nepoužít jQuery, když usnadňuje práci?
Proč nepoužít section, když si tím krásně oddělím jednotlivé fragmenty stránky? Krom toho, že to není určené pro starší prohlížeče v tom nevidím žádný problém.
Ohledně porovnávání - také na tom nevidím nic špatného, když to dokáže určit na jakém fragmentu se momentálně nacházím.
A ano u attr uznávám, že jsem se sekl, jenže když to funguje. :)
Chamurappi
Profil
Reaguji na tpmara:
Proč nepoužít jQuery, když usnadňuje práci?
S čím? Že místo okamžitého spuštění čekáš zbytečně na později? Že místo document.title = "něco" píšeš $(document).attr("title", "něco")? Bez jQuery by byl ten kód možná upovídanější o pár znaků, ale výsledek menší o 94 kB a efektivnější.

Krom toho, že to není určené pro starší prohlížeče v tom nevidím žádný problém.
Takže stránka bude třem lidem ze sta blbě fungovat jen a pouze proto, aby sis v kódu krásně oddělil fragmenty? To máš nějaké zvláštní priority. Navíc děláš rozhodnutí o kompatibilitě stránky za terezu789, aniž bys na to explicitně upozornil.

také na tom nevidím nic špatného, když to dokáže určit na jakém fragmentu se momentálně nacházím
Místo abys porovnal 0 a hodnotu X, tak porovnáváš Y a hodnotu vzniklou součtem X+Y, kde se při zjišťování Y ještě řeší nekompatibilita Webkitu se zbytkem světa. Zbytečně krkolomná cesta.
tpmar
Profil
Dobře, díky za odpověď. Pootevřela mi zase o něco víc oči. :) A omlouvám se za nevarování uživatele tereza789 ohledně HTML tagu section.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: