Index: /lib/wpsg_db.class.php
===================================================================
--- /lib/wpsg_db.class.php	(revision 6678)
+++ /lib/wpsg_db.class.php	(revision 6679)
@@ -17,5 +17,5 @@
 			$lastQuery = $wpdb->last_query;
 			
-			throw new \wpsg\Exception("Datenbankfehler: ".$wpdb->last_error, \wpsg\Exception::TYP_DB, array(
+			throw new \wpsg\Exception($wpdb->last_error, \wpsg\Exception::TYP_DB, array(
 				array(__('Letzter Query', 'wpsg'), $lastQuery)
 			));
Index: /lib/wpsg_exceptionhandler.class.php
===================================================================
--- /lib/wpsg_exceptionhandler.class.php	(revision 6678)
+++ /lib/wpsg_exceptionhandler.class.php	(revision 6679)
@@ -21,16 +21,43 @@
             if (get_class($ex) === "wpsg\Exception")
             {
-            
-                die("SYSTEMFEHLER:".$ex->getMessage());
-                // TODO: Eventuell Umleitung / Debug Ausgabe etc.
-               
+
+                $typeLabel = $ex->getTypLabel();
+                $arData = $ex->getData();
+
             }
             else 
             {
-            	
-            	die("SYSTEMFEHLER:".$ex->getMessage());
-            	
+
+                $typeLabel = __('Allgemeiner Fehler', 'wpsg');
+                $arData = Array();
+
             }
-                
+
+            $msg = $ex->getMessage();
+
+            // Protokolleintrag anlegen
+            $strLogText  = date('d.m.Y H:i:s').': '.str_pad($typeLabel, 50, ' ')."\r\n";
+            $strLogText .= $msg."\r\n";
+
+            foreach ($arData as $d)
+            {
+
+                $strLogText .= $d[0].': '.$d[1]."\r\n";
+
+            }
+
+            ob_start();
+            $strLogText .= $ex;
+            ob_end_clean();
+
+            $strLogText .= str_pad('', 120, '-')."\r\n";
+
+            $log_file = $GLOBALS['wpsg_sc']->getStorageRoot().'exception.log';
+
+            if (file_exists($log_file)) file_put_contents($log_file, $strLogText.file_get_contents($log_file));
+            else file_put_contents($log_file, $strLogText);
+
+            die($typeLabel.": ".$msg);
+
         } // static function myCallbackMethod($ex)
         
Index: /model/wpsg_exception.class.php
===================================================================
--- /model/wpsg_exception.class.php	(revision 6678)
+++ /model/wpsg_exception.class.php	(revision 6679)
@@ -15,5 +15,6 @@
         const TYP_DB = 1;
          
-        private $_typ = null;
+        private $typ = null;
+        private $data = null;
         
         public function __construct($message, $typ = null, $arData = array(), $code = 0, Exception $previous = null)
@@ -24,34 +25,20 @@
             if ($typ === null) $typ = self::TYP_UNEXPECTED;
             
-            $this->_typ = $typ;
-            
-            $strLogText  = date('d.m.Y H:i:s').': '.str_pad($this->getTypLabel(), 50, ' ')."\r\n";             
-            $strLogText .= $this->getMessage()."\r\n";
-                        
-            foreach ($arData as $d)
-            {
-                
-                $strLogText .= $d[0].': '.$d[1]."\r\n";
-                
-            }
-            
-            ob_start();
-            debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 4);
-            $strLogText .= ob_get_contents();
-            ob_end_clean();
-            
-            $strLogText .= str_pad('', 120, '-')."\r\n";
-            
-            $log_file = $GLOBALS['wpsg_sc']->getStorageRoot().'exception.log';
-            
-            if (file_exists($log_file)) file_put_contents($log_file, $strLogText.file_get_contents($log_file));
-            else file_put_contents($log_file, $strLogText); 
+            $this->typ = $typ;
+            $this->data = $arData;
             
         } // public function __construct($message, $code = 0, Exception $previous = null)
- 
+
+        public function getData()
+        {
+
+            return $this->data;
+
+        }
+
         public function getTypLabel() 
         {
         
-            switch ($this->_typ)
+            switch ($this->typ)
             {
                 
Index: /mods/mod_converter/M1_Converter_update.php
===================================================================
--- /mods/mod_converter/M1_Converter_update.php	(revision 6678)
+++ /mods/mod_converter/M1_Converter_update.php	(revision 6679)
@@ -269,5 +269,7 @@
 		require_once(ABSPATH."wp-admin".'/includes/post.php');
 		date_default_timezone_set('Europe/Berlin');
-		
+
+		if (!wpsg_isSizedString(get_option('wpsg_mod_produktartikel_pathkey_cat'))) update_option('wpsg_mod_produktartikel_pathkey_cat', 'wpsgtax');
+
 		if ( null == get_page_by_title('wpsg_variants_import') ) {
 			// Create the page
@@ -795,6 +797,7 @@
 				// Tabelle wp_term_taxonomy Feld taxonomy von category in wpsgtax Ã€ndern
 				$data = array(
-					'taxonomy' => 'wpsgtax'
+					'taxonomy' => $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat')
 				);
+
 				$krit = "`term_taxonomy_id` = '".wpsg_q($tt_id)."' AND `taxonomy` = '".wpsg_q('category')."'";
 				$tname = $GLOBALS['wpdb']->prefix."term_taxonomy";
@@ -810,5 +813,5 @@
 		
 		echo '<br /><br />';
-		echo $anz.' Kategorien geÃ€ndert von category auf wpsgtax.<br /><br />';
+		echo $anz.' Kategorien geÃ€ndert von category auf '.$this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat').'.<br /><br />';
 	
 		unset($_REQUEST['action']);
Index: /mods/wpsg_mod_produktartikel.class.php
===================================================================
--- /mods/wpsg_mod_produktartikel.class.php	(revision 6678)
+++ /mods/wpsg_mod_produktartikel.class.php	(revision 6679)
@@ -10,5 +10,4 @@
 		var $lizenz = 1;
 		var $id = 15;
-		var $hilfeURL = 'http://wpshopgermany.de/?p=2496';
 		var $version = "9.9.9";
 		var $free = false;
@@ -72,7 +71,15 @@
 			{
 
-				$this->shop->update_option('wpsg_mod_produktartikel_pathkey', 'produkte');
-
-			}
+				$this->shop->update_option('wpsg_mod_produktartikel_pathkey', 'produkt');
+
+			}
+
+            // Standard Path Key (Kategorien) setzen
+            if ($this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat') === false || $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat') == '')
+            {
+
+                $this->shop->update_option('wpsg_mod_produktartikel_pathkey_cat', 'produkte');
+
+            }
 
 			$this->shop->checkDefault('wpsg_mod_produktartikel_showui', '0');
@@ -346,4 +353,30 @@
 			}
 
+            $pathkey_cat_old = $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat');
+            $pathkey_cat_new = $this->shop->clear($_REQUEST['wpsg_mod_produktartikel_pathkey_cat']);
+
+            if ($pathkey_cat_old != $_REQUEST['wpsg_mod_produktartikel_pathkey_cat'] && $pathkey_cat_new != '')
+            {
+
+                $this->db->UpdateQuery($this->shop->prefix."term_taxonomy", array(
+                    'taxonomy' => wpsg_q($pathkey_cat_new)
+                ), " `taxonomy` = '".wpsg_q($pathkey_cat_old)."' ");
+
+                $this->db->UpdateQuery($this->shop->prefix."postmeta", array(
+                    'meta_value' => wpsg_q($pathkey_cat_new)
+                ), " `meta_key` = '_menu_item_object' AND `meta_value` = '".wpsg_q($pathkey_cat_old)."' ");
+
+                $this->shop->update_option('wpsg_mod_produktartikel_pathkey_cat', $pathkey_cat_new);
+
+                $this->shop->addBackendMessage(__('Path Key (Kategorie) erfolgreich geÃ€ndert. Die Kategorie URLs haben sich geÃ€ndert!', 'wpsg'));
+
+            }
+            else
+            {
+
+                $this->shop->addBackendError(__('Der Path Key (Kategorie) darf nicht leer sein!', 'wpsg'));
+
+            }
+
 			$this->create_wpsg_post_types();
 			flush_rewrite_rules();
@@ -356,5 +389,5 @@
 			$callback = add_submenu_page('wpsg-Admin', __("Produktkategorien", "wpsg"), __("Produktkategorien", "wpsg"), 'wpsg_produkt', 'wpsg-Productcategories', 'callback');
 
-			add_action("load-".$callback, function() { header('Location: '.admin_url('edit-tags.php?taxonomy=wpsgtax')); exit; } );
+			add_action("load-".$callback, function() { header('Location: '.admin_url('edit-tags.php?taxonomy='.$this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'))); exit; } );
 
 			add_filter('parent_file', array($this, 'setParentmenu'), 10, 1);
@@ -363,22 +396,19 @@
 		} // public function wpsg_add_pages()
 
-		function setParentmenu($parent_file) {
-
-			//http://shop4.home/wp-admin/admin.php?page=wpsg-Admin
-			//$parent_file = 'wp-admin/admin.php?page=wpsg-Admin';
-			
-			if (wpsg_isSizedString($_REQUEST['taxonomy'], 'wpsgtax')) $parent_file = 'wpsg-Admin';
+		function setParentmenu($parent_file)
+        {
+
+			if (wpsg_isSizedString($_REQUEST['taxonomy'], $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'))) $parent_file = 'wpsg-Admin';
 
 			return $parent_file;
 		}
 
-		function setSubmenu($submenu_file) {
-
-			//$submenu_file = 'wp-admin/admin.php?page=wpsg-Productcategories';
-			//edit-tags.php?taxonomy=wpsgtax
-			if ($submenu_file == 'edit-tags.php?taxonomy=wpsgtax')
-				$submenu_file = 'wpsg-Productcategories';
+		function setSubmenu($submenu_file)
+        {
+
+			if ($submenu_file == 'edit-tags.php?taxonomy='.$this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat')) $submenu_file = 'wpsg-Productcategories';
 
 			return $submenu_file;
+
 		}
 
@@ -670,5 +700,5 @@
 			if ($this->shop->get_option('wpsg_mod_produktartikel_showui') == '1') $show_ui = true;
 
-			register_taxonomy('wpsgtax', $this->shop->get_option('wpsg_mod_produktartikel_pathkey'), array(
+			register_taxonomy($this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'), $this->shop->get_option('wpsg_mod_produktartikel_pathkey'), array(
 				'label' => __('Produktkategorien', 'wpsg'),
 				'labels' => array(
@@ -693,5 +723,5 @@
 					'show_ui' => $show_ui,
  					'show_in_menu' => true,
-					'taxonomies' => array('wpsgtax'),
+					'taxonomies' => array($this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat')),
 					'has_archive' => true,
 					'supports' => array('title', 'editor', 'thumbnail')
@@ -1047,8 +1077,8 @@
 
 					// Neue Zuordnung speichern
-					if (wpsg_isSizedArray($_REQUEST['tax_input']['wpsgtax']))
+					if (wpsg_isSizedArray($_REQUEST['tax_input'][$this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat')]))
 					{
 
-						foreach ($_REQUEST['tax_input']['wpsgtax'] as $c)
+						foreach ($_REQUEST['tax_input'][$this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat')] as $c)
 						{
 
@@ -1145,5 +1175,5 @@
 				WHERE
 					TT.`parent` = '".wpsg_q($ref)."' AND
-					TT.`taxonomy` = 'wpsgtax' AND
+					TT.`taxonomy` = '".wpsg_q($this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'))."' AND
 					T.`term_id` > 0
 				ORDER BY
@@ -1175,5 +1205,5 @@
 
 			$arCat = get_categories(array(
-				'taxonomy' => 'wpsgtax',
+				'taxonomy' => $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'),
 				'child_of' => $child_of,
 				'hide_empty' => true,
@@ -1195,5 +1225,5 @@
 
 			$arCat = get_categories(array(
-				'taxonomy' => 'wpsgtax',
+				'taxonomy' => $this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'),
 				'parent' => $parent,
 				'hide_empty' => true
@@ -1220,5 +1250,5 @@
 				WHERE
 					TT.`parent` = '".wpsg_q($ref)."' AND
-					TT.`taxonomy` = 'wpsgtax' AND
+					TT.`taxonomy` = '".wpsg_q($this->shop->get_option('wpsg_mod_produktartikel_pathkey_cat'))."' AND
 					T.`term_id` > 0
 				ORDER BY
Index: /views/mods/mod_produktartikel/produkt_addedit_content.phtml
===================================================================
--- /views/mods/mod_produktartikel/produkt_addedit_content.phtml	(revision 6678)
+++ /views/mods/mod_produktartikel/produkt_addedit_content.phtml	(revision 6679)
@@ -13,5 +13,5 @@
 		<div id="category-all" class="tabs-panel">
 			<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
-				<?php wp_terms_checklist(wpsg_getStr($this->view['data']['post_id']), array('taxonomy' => 'wpsgtax')); ?>
+				<?php wp_terms_checklist(wpsg_getStr($this->view['data']['post_id']), array('taxonomy' => $this->get_option('wpsg_mod_produktartikel_pathkey_cat'))); ?>
 			</ul>
 		</div>
@@ -19,5 +19,5 @@
 	
 	<br />
-	<a href="<?php echo WPSG_URL_WP; ?>wp-admin/edit-tags.php?taxonomy=wpsgtax"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Kategorieverwaltung', 'wpsg'); ?></a>
+	<a href="<?php echo WPSG_URL_WP; ?>wp-admin/edit-tags.php?taxonomy=<?php echo $this->get_option('wpsg_mod_produktartikel_pathkey_cat'); ?>"><span class="wpsg-glyphicon glyphicon glyphicon-wrench"></span><?php echo __('Zur Kategorieverwaltung', 'wpsg'); ?></a>
 	
 <?php echo wpsg_drawForm_AdminboxEnd(); ?>
Index: /views/mods/mod_produktartikel/settings_edit.phtml
===================================================================
--- /views/mods/mod_produktartikel/settings_edit.phtml	(revision 6678)
+++ /views/mods/mod_produktartikel/settings_edit.phtml	(revision 6679)
@@ -6,5 +6,8 @@
 
 ?>
-<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel_pathkey', __('Path Key', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_pathkey'), array('help' => 'mod_produktartikel_pathkey')); ?>
+
+<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel_pathkey', __('Path Key (Produkte)', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_pathkey'), array('help' => 'mod_produktartikel_pathkey')); ?>
+<?php echo wpsg_drawForm_Input('wpsg_mod_produktartikel_pathkey_cat', __('Path Key (Kategorien)', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_pathkey_cat'), array('help' => 'wpsg_mod_produktartikel_pathkey_cat')); ?>
+
 <?php echo wpsg_drawForm_Checkbox('wpsg_mod_produktartikel_showui', __('Custom Post Type in Wordpress MenÃŒ sichtbar', 'wpsg'), $this->get_option('wpsg_mod_produktartikel_showui'), array('help' => 'wpsg_mod_produktartikel_showui'))?>
 
