Avatar billede Chewie Novice
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
Avatar billede bufferzone Praktikant
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
Avatar billede Chewie Novice
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
Avatar billede coderdk Praktikant
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>';
Avatar billede coderdk Praktikant
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>';
Avatar billede Chewie Novice
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
Avatar billede coderdk Praktikant
02. november 2006 - 11:12 #6
Ok :) Ellers kan du prøve at kigge på et AJAX-bibliotek og så prøve at loade hvert bogstav dynamisk, f.eks. med http://www.twilightuniverse.com/resources/code/sack/ eller en af de utallige andre :)
Avatar billede Chewie Novice
02. november 2006 - 12:53 #7
tak fo hjælpen
Avatar billede Chewie Novice
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester