Как мне установить основной URL-адрес приоритетом 1,0 и URL-адрес подкаталога приоритет 0,5 в sitemap.xml

Как сделать корневой индекс в карте сайта приоритетом 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?>

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') );
}

Обновить: Согласно комментариям Хакре

        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) );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]