0

如何使站点地图中的根索引优先级为 1.0,其余子目录文件的优先级为 0.5?

我正在使用这个 php 代码在访问页面时动态生成我的站点地图。

就像现在一样,它优先考虑设置值是什么

$url -> appendChild( $priority = $xml->createElement('priority', '0.5') );

对于站点地图中的每个 url,如下例所示:

站点地图示例

创建站点地图的 PHP 代码:

<?
$ignore = array( 'images', 'css', 'includes', 'cgi-bin', 'xml-sitemap.php' );

  function getFileList($dir, $recurse=false) {
  global $ignore;

    $retval = array();

    // open pointer to directory and read list of files
    $d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading");
    while ( false !== ( $entry = $d->read() ) ) {

        // Check if this dir needs to be ignored, if so, skip it.
        if ( in_array( utf8_encode( $entry ), $ignore ) )
            continue;

      // skip hidden files
      if($entry[0] == ".") continue;
      if(is_dir("$dir$entry")) {
        $retval[] = array(
          "name" => "$dir$entry/",
          "type" => filetype("$dir$entry"),
          "size" => 0,
          "lastmod" => filemtime("$dir$entry")
        );
        if($recurse && is_readable("$dir$entry/")) {
          $retval = array_merge($retval, getFileList("$dir$entry/", true));
        }
      } elseif(is_readable("$dir$entry")) {
        $retval[] = array(
          "name" => str_replace('./','/', $dir),
          "type" => mime_content_type("$dir$entry"),
          "size" => filesize("$dir$entry"),
          "lastmod" => filemtime("$dir$entry")
        );
      }
    }
    $d->close();

    return $retval;
  }

  $dirlist = getFileList("./", true);  

    // sitemap creation
    $time  = time();
    $sitemap = $_SERVER['DOCUMENT_ROOT'].'/sitemap.xml';
    if ($time - filemtime($sitemap) >= 1) { // 1 days

        $xml = new DomDocument('1.0', 'utf-8'); 
        $xml->formatOutput = true; 

        // creating base node
        $urlset = $xml->createElement('urlset'); 
        $urlset -> appendChild(
            new DomAttr('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9')
        );

            // appending it to document
        $xml -> appendChild($urlset);

        // building the xml document with your website content
        foreach($dirlist as $file)
        {
        if($file['type'] != 'text/x-php') continue;
            //Creating single url node
            $url = $xml->createElement('url'); 

            //Filling node with entry info
            $url -> appendChild( $xml->createElement('loc', 'http://www.airsahara.in'.$file['name']) ); 
            $url -> appendChild( $lastmod = $xml->createElement('lastmod', date('Y-m-d', $file['lastmod'])) ); 
            $url -> appendChild( $changefreq = $xml->createElement('changefreq', 'monthly') ); 
            $url -> appendChild( $priority = $xml->createElement('priority', '0.5') ); 

            // append url to urlset node
            $urlset -> appendChild($url);

        }
        $xml->save($sitemap);
    } // if time



    ?>
4

1 回答 1

0

我正在回答我自己的问题,因为我想通了。

我只是这样做了。我采用了这行代码并用 if 和 else 语句对其进行了扩展。

从此走

$url -> appendChild( $priority = $xml->createElement('priority', '0.5') );

对此

    if($file['name'] != '/') {
    $url -> appendChild( $priority = $xml->createElement('priority', '0.5') );
    } else {
        $url -> appendChild( $priority = $xml->createElement('priority', '1.0') );
    }

更新:根据 hakre 的评论

        if ($file['name'] != '/') {
            $p = '0.5';
            } else {
                $p = '1.0';
            }
        $url -> appendChild( $priority = $xml->createElement('priority', $p) );

这将是 if else 语句的简写

        $file['name'] != '/' ? $p = '0.5' : $p = '1.0';
        $url -> appendChild( $priority = $xml->createElement('priority', $p) );
于 2015-04-29T18:59:46.680 回答