diff --git a/module/VuFind/src/VuFind/View/Helper/Root/Record.php b/module/VuFind/src/VuFind/View/Helper/Root/Record.php
index b5485bae2f618f0ddbcab6008e0fbde06cb50af2..fac87a7a824823b0c7f875627f39b31ecfd24b13 100644
--- a/module/VuFind/src/VuFind/View/Helper/Root/Record.php
+++ b/module/VuFind/src/VuFind/View/Helper/Root/Record.php
@@ -415,33 +415,63 @@ class Record extends AbstractHelper
      * @return string
      */
     public function getCover($context, $default, $link = false)
+    {
+        $details = $this->getCoverDetails($context, $default, $link);
+        return $details['html'];
+    }
+
+    /**
+     * Get the rendered cover plus some useful parameters.
+     *
+     * @param string $context Context of code being genarated
+     * @param string $default The default size of the cover
+     * @param string $link    The link for the anchor
+     *
+     * @return array
+     */
+    public function getCoverDetails($context, $default, $link = false)
+    {
+        $details = compact('link', 'context') + [
+            'driver' => $this->driver, 'cover' => false, 'size' => false
+        ];
+        $preferredSize = $this->getCoverSize($context, $default);
+        if (empty($preferredSize)) {    // covers disabled entirely
+            $details['html'] = '';
+        } else {
+            // Find best option if more than one size is defined (e.g. small:medium)
+            foreach (explode(':', $preferredSize) as $size) {
+                if ($details['cover'] = $this->getThumbnail($size)) {
+                    $details['size'] = $size;
+                    break;
+                }
+            }
+
+            $details['html'] = $this->contextHelper->renderInContext(
+                'record/cover.phtml', $details
+            );
+        }
+        return $details;
+    }
+
+    /**
+     * Get the configured thumbnail size for record lists
+     *
+     * @param string $context Context of code being genarated
+     * @param string $default The default size of the cover
+     *
+     * @return string
+     */
+    protected function getCoverSize($context, $default = 'medium')
     {
         if (isset($this->config->Content->coversize)
             && !$this->config->Content->coversize
         ) {
             // covers disabled entirely
-            $preferredSize = false;
-        } else {
-            // check for context-specific overrides
-            $preferredSize = isset($this->config->Content->coversize[$context])
-                ? $this->config->Content->coversize[$context] : $default;
-        }
-        if (empty($preferredSize)) {
-            return '';
-        }
-
-        // Find best option if more than one size is defined (e.g. small:medium)
-        $cover = false;  // assume invalid until good size found below
-        foreach (explode(':', $preferredSize) as $size) {
-            if ($cover = $this->getThumbnail($size)) {
-                break;
-            }
+            return false;
         }
-
-        $driver = $this->driver;    // for convenient use in compact()
-        return $this->contextHelper->renderInContext(
-            'record/cover.phtml', compact('cover', 'link', 'context', 'driver')
-        );
+        // check for context-specific overrides
+        return isset($this->config->Content->coversize[$context])
+            ? $this->config->Content->coversize[$context] : $default;
     }
 
     /**