01. november 2006 - 08:23
Der er
7 kommentarer og 1 løsning
Opdeling af mega sitemap
Hej PHP eksperter Jeg bruger nedenstående kode til at skabe et sitemap automatisk - mit problem er bare at det bliver en liste på over 13.000 linier og det kan virke lidt voldsomt når man skal loade siden. Er det en der har et løsningsforslag til hvordan jeg undgå at det hele skal loades på engang ? evt. noget med at ligge det i alfabetisk orden ------------------------------------ (credits til codedk for at lave koden) define( "PAD", 10 ); // Pixels to indent each new level define( "FILES", "php,htm,html" ); // What file extensions to show // List of directories NOT to show in map $dontShow = array( "show_this/but_not_this", "secret", "admin" ); // Do not change this $prepared = false; function dirTree( $path, $level = 0 ) { global $dontShow, $prepared; $path .= ( substr( $path, -1 ) == '/' ? '' : '/' ); if ( !$prepared ) { $prepared = true; $n = count( $dontShow ); for ( $i = 0; $i < $n; $i++ ) { $dontShow[$i] = $path . $dontShow[$i]; } } $dirs = glob( $path . "*", GLOB_ONLYDIR | GLOB_NOSORT ); natsort( $dirs ); foreach ( $dirs as $dir ) { if ( !in_array( $dir, $dontShow ) ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } } $tmp = glob( $path . "*.{" . FILES . "}", GLOB_NOSORT | GLOB_BRACE ); $files = array(); foreach ( $tmp as $file ) { if ( !is_dir( $file ) ) { $files[] = $file; } } natsort( $files ); foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } } dirTree( "../" ); --------------------------------- /s
Annonceindlæg fra Deloitte
01. november 2006 - 09:35
#1
Jeg vil foreslå dig at opdele siderne efter søgeordenes tema, så de hænger fornuftigt sammen, det vil virke bedst i forhold til søgemaskinerne
01. november 2006 - 10:18
#2
Tak Kim - Der er rigtigt - men den opgave er totalt uoverskulig - det vil tage alt for lang tid en stump kode der kan dele det i alfabetisk orden og loade siderne A B C osv. en adgangen ville være perfekt (måske CSS kan gører det?) /Søren
01. november 2006 - 11:08
#3
Prøv at erstatte: foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } med: $old = ""; echo '<script type="text/javascript"> function toglDiv(id) { var d = document.getElementById(id); d.style.display = ( d.style.display == \'none\' ? \'block\' : \'none\' ); } </script>'; foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); $fchar = strtoupper($fname[0]); if ( $fchar != $old ) { if ( $old != "" ) { echo "</div>"; } echo '<div style="cursor: hand; font-weight: bold" onclick="toglDiv(\'ch-' . $fchar . '\')">' . $fchar . '</div>'; echo '<div id="ch-' . $fchar . '" style="display: none">'; } echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } echo '</div>';
01. november 2006 - 11:09
#4
Ups: $old = ""; echo '<script type="text/javascript"> function toglDiv(id) { var d = document.getElementById(id); d.style.display = ( d.style.display == \'none\' ? \'block\' : \'none\' ); } </script>'; foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); $fchar = strtoupper($fname[0]); if ( $fchar != $old ) { if ( $old != "" ) { echo "</div>"; } echo '<div style="cursor: hand; font-weight: bold" onclick="toglDiv(\'ch-' . $fchar . '\')">' . $fchar . '</div>'; echo '<div id="ch-' . $fchar . '" style="display: none">'; $old = $fchar; } echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } echo '</div>';
01. november 2006 - 18:08
#5
Tak coderdk - den fikser overblikket - så load tiden må jeg bare leve med, håber ikke google afviser mig på grund af størrelsen
02. november 2006 - 12:53
#7
tak fo hjælpen
24. januar 2007 - 21:15
#8
hej coderdk
google kan desværre ikke lide dette sitemap og så jeg må have lidt hjælp til at dele det op i sider med 30 links på vær
http://www.eksperten.dk/spm/758164 /s
Vi tilbyder markedets bedste kurser inden for webudvikling