Advertisement
Guest User

Taxonomy-Tree

a guest
Aug 31st, 2012
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.29 KB | None | 0 0
  1. <?php
  2. // -----------------------------------------------------
  3.  
  4. header("Content-Type: text/html; charset=utf-8");
  5.  
  6. // -----------------------------------------------------
  7. ?>
  8. <html>
  9. <head>
  10. <title>Kategorie Baum - Google Taxonomy</title>
  11. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  12.  
  13.  
  14. <script type="text/javascript">
  15.  
  16. function show(id) {
  17.     if (document.getElementById(id).style.display == "none") {
  18.         document.getElementById(id).style.display = "block";
  19.     } else {
  20.         document.getElementById(id).style.display = "none";
  21.     }
  22. }
  23.  
  24. </script>
  25.  
  26.  
  27. </head>
  28.  
  29. <body bgcolor="#FFFFFF" text="#000000">
  30.  
  31. <h1>Kategorie Baum - Google Taxonomy</h1>
  32.  
  33. <br>
  34. <br>
  35. <br>
  36.  
  37. <?php
  38. // -----------------------------------------------------------------
  39.  
  40. ### http://www.google.com/basepages/producttype/taxonomy.de-DE.txt
  41.  
  42. $filename = 'taxonomy.de-DE.txt';
  43.  
  44. $fdata1 = file($filename, FILE_IGNORE_NEW_LINES);
  45.  
  46. // -----------------------------------------------------
  47.  
  48. $kat_temp = array();   // ---  Hilfs-Array ID->Name
  49. $kat_data = array();   // ---  Ergebnis-Array Daten
  50.  
  51. $max_deep = 0;  // --- max. Tiefe der Kategorie-Ebenen
  52.  
  53. // -----------------------------------------------------------------
  54.  
  55. foreach($fdata1 as $key => $line) {
  56.  
  57.   if ($key > 0) {
  58.  
  59. // ------ Kategorie Ebene ($level) ermitteln -----
  60.     $nx = substr_count($line, '>');
  61.     if ($nx > $max_deep) { $max_deep = $nx; }
  62.     ## $level = ($nx+1);
  63.     $level = $nx;
  64.  
  65. // ------ Element in Array $kat_temp erstellen -----
  66.     $subarray = explode('>', $line);
  67.     $kat_name = trim($subarray[$nx]);
  68.     $kat_temp[$key] = $kat_name;
  69.  
  70. // ------ parent_id aus $kat_temp ermitteln -----
  71.     if ($nx > 0) {
  72.       $ny = ($nx-1);
  73.       $kat_pren = trim($subarray[$ny]);
  74.       $kat_prek = array_search($kat_pren, $kat_temp);
  75.     }
  76.     else {
  77.       $kat_pren  = 'root';
  78.       $kat_prek = '0';
  79.     }
  80.  
  81. // ------ Neues Array-Element erstellen -----
  82.     $kat_data[$key] = array(
  83.       'id' => $key,
  84.       'parent_id' => $kat_prek,
  85.       'level' => $level,
  86.       'name' => $kat_name
  87.     );
  88.  
  89.     unset($subarray);
  90.   }
  91.  
  92. }
  93.  
  94. unset($kat_temp);
  95.  
  96. // -----------------------------------------------------------------
  97.  
  98.  
  99. echo "<br />\n";
  100. echo "<br />Max Deep: ".$max_deep."\n";
  101. echo "<br />\n";
  102.  
  103. // -----------------------------------------------------------------
  104.  
  105. if (!empty($_REQUEST['d'])) {
  106. $go_d = trim($_REQUEST['d']);
  107. }
  108. else {
  109. $go_d = '1';
  110. }
  111.  
  112. // -----------------------------------------------------------------
  113.  
  114.  
  115. $runfile = $_SERVER['PHP_SELF'];
  116.  
  117. for ($d=1; $d<=$max_deep; $d++) {
  118.  
  119. if ($d == $go_d) {
  120. echo "<br />... <strong>zeige ".$d." Ebene(n)</strong>\n";
  121. }
  122. else {
  123. echo "<br />... <a href=\"".$runfile."?d=".$d."\">zeige ".$d." Ebene(n)</a>\n";
  124. }
  125.  
  126. }
  127.  
  128.  
  129. // -----------------------------------------------------------------
  130.  
  131.  
  132. ## print "<br />---- DEBUG --- kat_data ---- \n";
  133. ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
  134. ## print_r($kat_data);
  135. ## print "</pre>\n";
  136. ## print "<br />\n";
  137.  
  138.  
  139. // -----------------------------------------------------------------
  140.  
  141.  
  142.  
  143. $p = array(0 => array());
  144.  
  145. foreach($kat_data as $n) {
  146.  
  147.   $pid = $n['parent_id'];
  148.   $id = $n['id'];
  149.  
  150.   if (!isset($p[$pid])) {
  151.     $p[$pid] = array('child' => array());
  152.     }
  153.    
  154.   if (isset($p[$id])) { $child = &$p[$id]['child']; }
  155.     else { $child = array(); }
  156.  
  157.   $p[$id] = $n;
  158.   $p[$id]['child'] = &$child;
  159.   ## unset($p[$id]['parent_id']);
  160.  unset($child);
  161.  
  162.   $p[$pid]['child'][] = &$p[$id];    
  163.  
  164. }
  165.  
  166. $nodes = $p['0']['child'];
  167. unset($p);
  168.  
  169.  
  170. // -----------------------------------------------------
  171.  
  172.  
  173. ## print "<br />---- DEBUG --- nodes ---- \n";
  174. ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
  175. ## print_r($nodes);
  176. ## print "</pre>\n";
  177. ## print "<br />\n";
  178.  
  179.  
  180.  
  181. // -----------------------------------------------------
  182.  
  183. $outputArray = array();
  184. $nodeRefs = array(0 => &$outputArray);
  185.  
  186. foreach ($kat_data as $element) {
  187.    
  188.     $parent = &$nodeRefs[$element['parent_id']];
  189.     $parent[$element['id']] = array( 'name' => $element['name'], 'parent_id' => $element['parent_id'], 'sub' => array() );
  190.     $nodeRefs[$element['id']] = &$parent[$element['id']]['sub'];
  191.  
  192. }
  193.  
  194. // -----------------------------------------------------
  195.  
  196.  
  197.  
  198.  
  199. ## print "<br />---- DEBUG --- outputArray ---- \n";
  200. ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
  201. ## print_r($outputArray);
  202. ## print "</pre>\n";
  203. ## print "<br />\n";
  204.  
  205.  
  206.  
  207. // -----------------------------------------------------------------
  208.  
  209. function print_tree($array, $level=0, $view=1) {
  210. global $go_shopid;
  211.    
  212.     if ($level == 0) { print "<ul id=\"katroot\" style=\"background:#DEDEDE;\">\n";  }
  213.    
  214.    
  215.     foreach($array as $key => $val) {
  216.        
  217.         $level++;
  218.        
  219.         if ( isset($val['sub']) && !empty($val['sub']) ) {
  220.            
  221.             $preid = $val['parent_id'];
  222.            
  223.             print "<li>".$val['name']." (<a href=\"javascript:show('".$key.$level."')\">".$preid." / ".$key."</a>) - ".$level."";
  224.            
  225.            
  226.             if ($level == 1) { $ulcolor = 'background:#FFFFCC;'; }
  227.                 elseif ($level == 2) { $ulcolor = 'background:#CCFFFF;'; }
  228.                 elseif ($level == 3) { $ulcolor = 'background:#FFFFFF;'; }
  229.                 elseif ($level == 4) { $ulcolor = 'background:#FFCCFF;'; }
  230.                 elseif ($level == 5) { $ulcolor = 'background:#EEEEFF;'; }
  231.                 else { $ulcolor = 'background:#EAEAEA;'; }
  232.            
  233.             if ($level >= $view) { $ulview = 'display:none;'; }
  234.                 else { $ulview = 'display:block;'; }
  235.            
  236.             $ulstyle = 'style="'.$ulview.' '.$ulcolor.'"';
  237.            
  238.             print "\n<ul id=\"".$key.$level."\" ".$ulstyle.">\n";
  239.            
  240.            
  241.             print_tree($val['sub'], $level, $view);
  242.            
  243.             print "</li>\n</ul>\n";
  244.            
  245.         }
  246.         else {
  247.        
  248.             print "<li>".$val['name']." (".$key.") - ".$level."</li>\n";
  249.        
  250.         }
  251.        
  252.        
  253.         $level--;
  254.        
  255.     }
  256.    
  257.     if ($level == 0) { print "</ul>\n"; }
  258.    
  259.  
  260. }
  261.  
  262. // -----------------------------------------------------------------
  263.  
  264.  
  265. print "<br />\n";
  266. print "<br />\n";
  267. print "<br />\n";
  268.  
  269.  
  270. $data_array = $outputArray;
  271. $startlevel = 0;
  272. $open_level = $go_d;
  273.  
  274. print_tree($data_array, $startlevel, $open_level);
  275.  
  276. print "<br />\n";
  277. print "<br />\n";
  278. print "<br />\n";
  279.  
  280.  
  281. // -----------------------------------------------------------------
  282. ?>
  283.  
  284.  
  285. <br>
  286. <br>
  287. <br>
  288. <br>
  289. <br>
  290.  
  291. </body>
  292. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement