--- directory.module	2007-10-11 14:09:51.000000000 +0200
+++ directory.module.new	2007-10-11 14:09:26.000000000 +0200
@@ -171,6 +171,16 @@ function directory_admin_settings() {
   	'#rows' => 5,
   	'#description' => t('This text will be displayed at the top of <strong>each directory term page</strong>.  It is useful for helping or instructing your users.'),
   );
+  
+  $form['directory_node_order'] = array(
+    '#type' => 'select',
+    '#title' => t('Select the type of order for the resulting node list'),
+    '#default_value' => variable_get('directory_node_order', 'changed'),
+    '#options' => array(
+      'changed' => t('By changed time (sticky first)'),
+      'name' => t('By title'),
+    ),
+  );
 
   return system_settings_form($form);
 }
@@ -438,6 +448,15 @@ function directory_get_nodes_by_term($ti
   if (!is_numeric($pager_count)) $pager_count = 1;
   $nodes = array();
   $where = '';
+  $order = variable_get('directory_node_order', 'changed');
+  switch($order) {
+    case 'changed':
+      $order_sql = ' ORDER BY n.sticky DESC, n.changed DESC';
+      break;
+    case 'name':
+      $order_sql = ' ORDER BY n.title ASC';
+      break;
+  }
 
   $skip_type = variable_get('directory_no_nodes', '');
   if (!empty($skip_type)) {
@@ -448,16 +467,16 @@ function directory_get_nodes_by_term($ti
   }
 
   if ($tid == 'alpha') {
-    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where .' AND n.status = 1 ORDER BY n.sticky DESC, n.changed DESC');
+    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where .' AND n.status = 1 '. $order_sql);
   }
   elseif ($tid == '0-9') {
-    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where ." AND n.status = 1 AND n.title REGEXP '^[0-9]' ORDER BY n.sticky DESC, n.changed DESC");
+    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where ." AND n.status = 1 AND n.title REGEXP '^[0-9]'". $order_sql);
   }
   elseif (preg_match('/^[a-zA-z]$/', $tid)) {
-    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where ." AND n.status = 1 AND n.title LIKE '". db_escape_string($tid) ."%' ORDER BY n.sticky DESC, n.changed DESC");
+    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where ." AND n.status = 1 AND n.title LIKE '". db_escape_string($tid) ."%'". $order_sql);
   }
   else {
-    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where .' AND n.status = 1 AND t.tid = '. db_escape_string($tid) .' ORDER BY n.sticky DESC, n.changed DESC');
+    $sql = db_rewrite_sql('SELECT n.nid FROM {node} n INNER JOIN {term_node} t ON t.nid = n.nid WHERE 1 '. $where .' AND n.status = 1 AND t.tid = '. db_escape_string($tid) . $order_sql);
   }
   if ($pager) {
     $result = pager_query($sql, $limit, $pager_count);
