Autor Zpráva
miropiro
Profil
Dobrý den, již delší dobu se potýkáme ve firmě s problémem, že jedna stránka s více jazyky nefunguje zcela ideálně z hlediska klíčových slov a popisu. Když jsem tento problém ukazoval tvůrci jiného webu pro naší firmu, tak nevěděl moc, co s tím. Ani jiný správce webu s tím moc neví, co vlastně dělat a navrhuje jen předělání webu pod nějaký redakční systém. Ano, bude se s webem pracovat nejspíše o něco pohodlněji (kandidátem je TYPO 3), ale i tak asi ještě bude chvíli trvat, než se ten web v novém spustí.

Proto jsem se rozhodl zkusit si hrát s webem na jiné subdoméně, konkrétně na http://www.test.lambda-instruments.in/ . Pravda však je, že i když jsem nakopíroval celý web na subdoménu, tak mi odkazy mezi stránkami nefungují, takže mi to vlastně teď moc nejde.

V každém případě, v souboru index.php jsem nalezl následující:

if(isset($_SESSION['mainPage']))
  
  // SESSION jde do $langHref
  
    $langHref = $_SESSION['mainPage'];
  else
    $langHrefIndex = 'index.php';
    
  require("files/functions.php");
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="Keywords" content="{KEYWORDS}" >
<meta name="Description" content="{DESCRIPTION}" >

A o něco níže pak ještě:

/* nalezneme SEO */
        include ('files/seo.php');
        $title = getTitle ($out);
        $desc = getDescription ($out);
        $desc = preg_replace ('/([A-Z]{3}[A-Z]+)/e',"ucwords(strtolower('\\1'))",$desc);
        $desc = preg_replace ('/([A-Z]{2})/e',"strtolower('\\1')",$desc);
        $desc = preg_replace ('/^'.preg_quote($title).'/si',ucwords(strtolower($title)), $desc);
        
        $page["TITLE"] = ucwords(strtolower($title));        
        $page["DESCRIPTION"] = $desc;
        $page["KEYWORDS"] = getKeywords ($out);

Problém je ten, že v souboru seo.php se moc nevyznám, jeho kód je na mne tak trochu "vyšší dívčí"...


Tj...

<?
function getBlock ($in, $name, $complete = FALSE) {
        preg_match_all ("/\<\!\-\- ".$name."BEGIN \-\-\>(.*)\<\!\-\- ".$name."END \-\-\>/si",$in,$matches);
        if ($complete):
            return $matches[0][0];
        else:
            return $matches[1][0];
        endif;
    } 
    
    /* ----------- VYCISTENI TEXTU ------------- */
 function cleanText ($in) {
 /*
    vycisti html text na plain text  
 */
    $in = preg_replace ("/<[hp][0-9]*>/","",$in); # za nadpis a blok - tecku
    $in = preg_replace ("/<\/[hp][0-9]*>/",".",$in);
    $in = HTMLtoText ($in);                       # odstrani html tagy
    $in = str_replace("\r","\n",$in);             # nove radky
    $in = str_replace ("\n",". ",$in);            # nove radky na .
    $in = preg_replace ('/\.+ \.+/','.',$in);     # odmaze zmatky s teckama .. .
    $in = CleanWhiteSpaces ($in);                 # vsechny bile znaky na mezeru
    $in = preg_replace ('/ +/',' ',$in);          # vsechny mezery na jednu
        $in = preg_replace ('/^[^a-zA-Z0-9]+/','',$in); # nesmysly na zacatku
    return $in;
 }

 function CleanWhiteSpaces ($in) {
   return preg_replace('/\s\s+/', ' ', $in);
 }

 function HTMLtoText ($in) {
     $search = array ("'<script[^>]*?>.*?</script>'si",
                 "'<[\/\!]*?[^<>]*?>'si",
                 "'([\r\n])[\s]+'",                
                 "'&(quot|#34);'i",                
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");
    $replace = array ("",
                 "",
                 "\\1",
                 "\"",
                 "&",
                 "<",
                 ">",
                 " ",
                 "<br>",
                 chr(161),
                 chr(162),
                 chr(163),
                 chr(169),
                 "chr(\\1)");

        return preg_replace($search, $replace, $in);
     }

    function readKeywords ($keywords) {                  
        $kw = str_replace ("\r\n","\n",$keywords);
        $keywords = explode ("\n",$kw);
        $output = array ();
        foreach ($keywords as $key => $value) {
            if (!$value) continue;
            $arr = explode (" = ",$value);
            if (count($arr) == 2) {
                array_push ($output, array ("phrase" => $arr[0],"keyword" => $arr[1]));
            } else {
                array_push ($output, array ("keyword" => $arr[0],"phrase" => $arr[0]));
            }        
        }
        return $output;
    }
    
     
  function createKeyWords ($in, $kw) {
  
    /* prevod na LC */
      $in = strtolower ($in);
      
    /* pocty nalezenych frazi */
      $count = array ();
      $kwCount = count ($kw);
     
      foreach ($kw as $key => $item) {
        // nalezneme pocet vyskytu hledane fraze
          $pocetVyskytu = substr_count ($in, strtolower($item["phrase"]));
        // nalezeno > 0
          if ($pocetVyskytu > 0) {
            $count [$item["keyword"]] = $pocetVyskytu * ($kwCount - count($count)) / $kwCount;
          }
      }
      
      arsort ($count);
  
      $keywords = array ();
      $i = 0;
      foreach ($count as $key => $value) {
        $i++;
        array_push ($keywords,$key);
        if ($i>7) break;
      }
      
      return $keywords;
 } 
    
 function getTitle ($in) {
        preg_match_all ('/\<span class\=\"mainNadpisH1\"\>(.+)\<\/span\>/',$in,$out);
        if (!empty ($out[1])) {
            return $out[1][0]." - Lambda Laboratory Instruments";
        } else {
            return "LAMBDA Laboratory Instruments - bioreactor, fermentor, peristaltic pumps, syringe pump, fraction collector, powder dosing, fermenters"; 
        }
    }
    
    
    function getDescription ($in) {
        // get page content        
            preg_match_all ("/\<h1 class\=\"mainNadpis\"\>(.+)\<\!\-\- CONTENTEND \-\-\>/si",$in,$matches);            
            if (!empty($matches[1])) {
                $out = $matches[1][0];
            } else {
                preg_match_all ("/\<\!\-\- CONTENTBEGIN \-\-\>(.+)\<\!\-\- CONTENTEND \-\-\>/si",$in,$matches);
                $out = $matches[1][0];                
            }
            unset ($matches);

        // clean HTML & white spaces
            $out = cleanText ($out);            
            
        // parse into phrases
        $contentPhrases = explode (" ",$out);
            $i = 0;
            while ($i <= 100) {                
                $description .= " ".$contentPhrases[$i];
                $i++;
            }
            
        // trim last bugs
        $description = trim ($description);
            $description = preg_replace ("/\.+/si",".",$description);
            $description = preg_replace ("/\.* +\.+/",".",$description);
            if (count($contentPhrases) > 128) {
                $description .= " ...";
            }
            
        // set output
        $out = $description;
            
        // return description
            return empty($out)?"LAMBDA develops innovative, high quality laboratory instruments with an excellent price to performance ratio: laboratory fermenter, fermentors, bioreactor for cell culture, biotechnology, peristaltic pumps, syringe pumps, fraction collectors, powder dosing (powder pump), mass flow gas controllers, fermentation software":$out;         
    }
 
    function getKeywords ($in) {
            preg_match_all ("/\<h1 class\=\"mainNadpis\"\>(.+)\<\!\-\- CONTENTEND \-\-\>/si",$in,$matches);            
            if (!empty($matches[1])) {
                $out = $matches[1][0];
            } else {
                preg_match_all ("/\<\!\-\- CONTENTBEGIN \-\-\>(.+)\<\!\-\- CONTENTEND \-\-\>/si",$in,$matches);
                $out = $matches[1][0];                
            }
            unset ($matches);
        
        /* clean source code */
            $in = cleanText ($out);    
        
        /* read keywords list */
         $kwFile = file_get_contents ('keywords.txt');
         $kw = readKeywords ($kwFile);         
         unset ($kwFile); 
        
        /* locate keywords */
        $keywords = createKeyWords ($in, $kw);
            
        /* return keywords */
        return implode(",",$keywords);
    }

?>

Soubor keywords.txt nefunguje, jsou v něm sice klíčová slova, ale ani při editaci a přidání klíčových slov navíc jsem si nepomohl.


Jednotlivé stránky jsou pak definovány ve functions.php, například takto

case "Peristaltic-pump-saves-more-money-than-it-costs":
                        $prodImg="doc/flash.php";
                        $miniMenu="doc/minimenu.php";
                        $mainDoc="doc/press/Peristaltic-pump-saves-more-money-than-it-costs.php";
                        $title="Peristaltic pump saves more money than it costs";
                        $description="The Maxiflow pump extends the product range of the high quality Lambda peristaltic pumps which have been specially developed for long term continuous processes like in fermentations and cell cultures. The tubing economy is such that the peristaltic pump is paid back after the use of only 80m of tubing.";
                        $keywords="peristaltic pump, peristaltic, pump, peristaltic pumps, pumps, tubing, tubing pump, laboratory instruments, laboratory equipment, lab instruments, lab equipment";
                        $_SESSION['mainPage'] = 'index.php';

Ovšem ta klíčová slova vůbec nejsou uvažována.

Co s tím udělat, aby to fungovalo? Omlouvám se, že jsem to napsal do tří příspěvků, ale nějak mi to systém nechtěl přijmout...
juriad
Profil
Na meta keywords můžeš úplně zapomenout, viz Meta tagy » Další informace pro vyhledávače.
Jelikož je description tahán automatikou z obsahu stránek, také nemá smysl se jím zabývat. Description má být krátký popis/souhrn stránky napsaný člověkem. Myslím, že Google si zvládne vybrat ze stránky text lépe, než mu jej tvůj skript dokáže nabídnout.
miropiro
Profil
juriad: Chcete mi tím naznačit, že se tím vlastně nemám zabývat a vzrušovat? Když si zobrazím informace o stránce (dejme tomu této http://www.lambda-instruments.com/?pages=francais-fermenteur), tak jako description to ukazuje část z prvního odstavce...to je v pořádku?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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