--- 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 each directory term page. 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);