diff --git a/module/VuFind/src/VuFind/Controller/ChannelsController.php b/module/VuFind/src/VuFind/Controller/ChannelsController.php
index 69528fd3745606626a60365e3daa24e3e07c9549..420522eee143993f84a306db6e84c19861008e65 100644
--- a/module/VuFind/src/VuFind/Controller/ChannelsController.php
+++ b/module/VuFind/src/VuFind/Controller/ChannelsController.php
@@ -42,18 +42,40 @@ use Zend\Config\Config;
 class ChannelsController extends AbstractBase
 {
     /**
-     * Generates static front page of channels.
+     * Retrieve channel information for the Channels/Home page.
      *
-     * @return \Zend\View\Model\ViewModel
+     * @param array  $providers     Array of channel providers
+     * @param string $searchClassId Search class ID
+     * @param string $token         Channel token
+     *
+     * @return array
      */
-    public function homeAction()
+    protected function getHomeChannels($providers, $searchClassId, $token)
     {
-        $view = $this->createViewModel();
+        $callback = function ($runner, $params, $searchClassId) use ($providers) {
+            foreach ($providers as $provider) {
+                $provider->configureSearchParams($params);
+            }
+        };
         $runner = $this->serviceLocator->get('VuFind\SearchRunner');
+        $results = $runner->run([], $searchClassId, $callback);
 
-        // Send both GET and POST variables to search class:
-        $request = [];
+        $channels = [];
+        foreach ($providers as $provider) {
+            $channels = array_merge(
+                $channels, $provider->getFromSearch($results, $token)
+            );
+        }
+        return $channels;
+    }
 
+    /**
+     * Generates static front page of channels.
+     *
+     * @return \Zend\View\Model\ViewModel
+     */
+    public function homeAction()
+    {
         $config = $this->getConfig('channels');
         $defaultSearchClassId = isset($config->General->default_home_source)
             ? $config->General->default_home_source : DEFAULT_SEARCH_BACKEND;
@@ -62,22 +84,9 @@ class ChannelsController extends AbstractBase
             ? $config->{"source.$searchClassId"}->home->toArray() : [];
         $providers = $this->getChannelProviderArray($providerIds, $config);
 
-        $callback = function ($runner, $params, $searchClassId) use ($providers) {
-            foreach ($providers as $provider) {
-                $provider->configureSearchParams($params);
-            }
-        };
-        $view->results = $runner->run($request, $searchClassId, $callback);
-
-        $view->channels = [];
-        $view->token = $this->params()->fromQuery('channelToken');
-        foreach ($providers as $provider) {
-            $view->channels = array_merge(
-                $view->channels,
-                $provider->getFromSearch($view->results, $view->token)
-            );
-        }
-        return $view;
+        $token = $this->params()->fromQuery('channelToken');
+        $channels = $this->getHomeChannels($providers, $searchClassId, $token);
+        return $this->createViewModel(compact('token', 'channels'));
     }
 
     /**