diff --git a/plugins/views_plugin_display.inc b/plugins/views_plugin_display.inc
index f36323d..ee547e2 100644
--- a/plugins/views_plugin_display.inc
+++ b/plugins/views_plugin_display.inc
@@ -342,7 +342,7 @@ class views_plugin_display extends views_plugin {
       'group_by' => array('group_by'),
       'query' => array('query'),
       'use_more' => array('use_more', 'use_more_always', 'use_more_text'),
-      'link_display' => array('link_display'),
+      'link_display' => array('link_display', 'link_url'),
 
       // Force these to cascade properly.
       'style_plugin' => array('style_plugin', 'style_options', 'row_plugin', 'row_options'),
@@ -409,6 +409,7 @@ class views_plugin_display extends views_plugin {
           'exposed_form_options' => TRUE,
 
           'link_display' => TRUE,
+          'link_url' => '',
           'group_by' => TRUE,
 
           'style_plugin' => TRUE,
@@ -487,6 +488,9 @@ class views_plugin_display extends views_plugin {
       'link_display' => array(
         'default' => '',
       ),
+      'link_url' => array(
+        'default' => '',
+      ),
       'group_by' => array(
         'default' => FALSE,
         'bool' => TRUE,
@@ -950,6 +954,33 @@ class views_plugin_display extends views_plugin {
   }
 
   /**
+   * Returns to tokens for arguments.
+   *
+   * This function is similar to views_handler_field::get_render_tokens()
+   * but without fields tokens.
+   */
+  function get_arguments_tokens() {
+    $tokens = array();
+    if (!empty($this->view->build_info['substitutions'])) {
+      $tokens = $this->view->build_info['substitutions'];
+    }
+    $count = 0;
+    foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
+      $token = '%' . ++$count;
+      if (!isset($tokens[$token])) {
+        $tokens[$token] = '';
+      }
+
+      // Use strip tags as there should never be HTML in the path.
+      // However, we need to preserve special characters like " that
+      // were removed by check_plain().
+      $tokens['!' . $count] = isset($this->view->args[$count - 1]) ? strip_tags(html_entity_decode($this->view->args[$count - 1])) : '';
+    }
+
+    return $tokens;
+  }
+
+  /**
    * Provide the default summary for options in the views UI.
    *
    * This output is returned as an array.
@@ -1195,27 +1226,15 @@ class views_plugin_display extends views_plugin {
     }
 
     if ($this->uses_link_display()) {
-      // Only show the 'link display' if there is more than one option.
-      $count = 0;
-      foreach ($this->view->display as $display_id => $display) {
-        if (is_object($display->handler) && $display->handler->has_path()) {
-          $count++;
-        }
-        if ($count > 1) {
-          break;
-        }
-      }
-
-      if ($count > 1) {
-        $display_id = $this->get_link_display();
-        $link_display = empty($this->view->display[$display_id]) ? t('None') : check_plain($this->view->display[$display_id]->display_title);
-        $options['link_display'] = array(
-          'category' => 'other',
-          'title' => t('Link display'),
-          'value' => $link_display,
-          'desc' => t('Specify which display this display will link to.'),
-        );
-      }
+      $display_id = $this->get_link_display();
+      $link_display = empty($this->view->display[$display_id]) ? t('None') : check_plain($this->view->display[$display_id]->display_title);
+      $link_display =  $this->get_option('link_display') == 'custom_url' ? t('Custom URL') : $link_display;
+      $options['link_display'] = array(
+        'category' => 'other',
+        'title' => t('Link display'),
+        'value' => $link_display,
+        'desc' => t('Specify which display or custom url this display will link to.'),
+      );
     }
 
     if ($this->uses_exposed_form_in_block()) {
@@ -1365,7 +1384,7 @@ class views_plugin_display extends views_plugin {
         $form['use_more'] = array(
           '#type' => 'checkbox',
           '#title' => t('Create more link'),
-          '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above."),
+          '#description' => t("This will add a more link to the bottom of this view, which will link to the page view. If you have more than one page view, the link will point to the display specified in 'Link display' above. You can override the url at the link display setting."),
           '#default_value' => $this->get_option('use_more'),
         );
         $form['use_more_always'] = array(
@@ -1621,11 +1640,48 @@ class views_plugin_display extends views_plugin {
             $options[$display_id] = $display->display_title;
           }
         }
-        $form['link_display'] = array(
-          '#type' => 'radios',
-          '#options' => $options,
-          '#description' => t("Which display to use to get this display's path for things like summary links, rss feed links, more links, etc."),
-          '#default_value' => $this->get_link_display(),
+        $options['custom_url'] = t('Custom URL');
+        if (count($options)) {
+          $form['link_display'] = array(
+            '#type' => 'radios',
+            '#options' => $options,
+            '#description' => t("Which display to use to get this display's path for things like summary links, rss feed links, more links, etc."),
+            '#default_value' => $this->get_option('link_display'),
+          );
+        }
+
+        $options = array();
+        $count = 0; // This lets us prepare the key as we want it printed.
+        foreach ($this->view->display_handler->get_handlers('argument') as $arg => $handler) {
+          $options[t('Arguments')]['%' . ++$count] = t('@argument title', array('@argument' => $handler->ui_name()));
+          $options[t('Arguments')]['!' . $count] = t('@argument input', array('@argument' => $handler->ui_name()));
+        }
+
+        // Default text.
+        // We have some options, so make a list.
+        if (!empty($options)) {
+          $output = t('<p>The following tokens are available for this link.</p>');
+          foreach (array_keys($options) as $type) {
+            if (!empty($options[$type])) {
+              $items = array();
+              foreach ($options[$type] as $key => $value) {
+                $items[] = $key . ' == ' . $value;
+              }
+              $output .= theme('item_list',
+                array(
+                  'items' => $items,
+                  'type' => $type
+                ));
+            }
+          }
+        }
+
+        $form['link_url'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Custom URL'),
+          '#default_value' => $this->get_option('link_url'),
+          '#description' => t('A Drupal path or external URL the more link will point to. Note that this will override the link display setting above.') . $output,
+          '#dependency' => array('radio:link_display' => array('custom_url')),
         );
         break;
       case 'analyze-theme':
@@ -2163,6 +2219,7 @@ class views_plugin_display extends views_plugin {
       case 'link_display':
       case 'display_comment':
         $this->set_option($section, $form_state['values'][$section]);
+        $this->set_option('link_url', $form_state['values']['link_url']);
         break;
       case 'field_language':
         $this->set_option('field_language', $form_state['values']['field_language']);
@@ -2347,8 +2404,16 @@ class views_plugin_display extends views_plugin {
   function render_more_link() {
     if ($this->use_more() && ($this->use_more_always() || (!empty($this->view->query->pager) && $this->view->query->pager->has_more_records()))) {
       $path = $this->get_path();
+
+      if ($this->get_option('link_display') == 'custom_url' && $override_path = $this->get_option('link_url')) {
+        $tokens = $this->get_arguments_tokens();
+        $path = strtr($override_path, $tokens);
+      }
+
       if ($path) {
-        $path = $this->view->get_url(NULL, $path);
+        if (empty($override_path)) {
+          $path = $this->view->get_url(NULL, $path);
+        }
         $url_options = array();
         if (!empty($this->view->exposed_raw_input)) {
           $url_options['query'] = $this->view->exposed_raw_input;
