Displaying a Custom Field: VuFind® 3.x Example

This example shows you how to set up a custom module, custom theme and custom record driver. It assumes that you have already added a custom field to your Solr index named RecID – you can see more concrete examples of adding fields on the Adding Facets page.

1. Create a custom module (if you haven't already done so)

 cd $VUFIND_HOME
 php install.php

2. From $VUFIND_HOME enter the following code generator command:

 php public/index.php generate extendservice vufind/plugin_managers/recorddriver/factories/solrmarc ModuleName
 Saved file: /usr/local/vufind/module/ModuleName/src/ModuleName/RecordDriver/SolrMarc.php
 Saved file: /usr/local/vufind/module/ModuleName/src/ModuleName/RecordDriver/Factory.php
 Successfully updated /usr/local/vufind/module/ModuleName/config/module.config.php
 export VUFIND_LOCAL_MODULES=ModuleName
 php public/index.php generate extendservice vufind/plugin_managers/recorddriver/factories/solrmarc ModuleName

3. Update the SolrMarc.php file to add a new field.

 Example: 
 <?php
 namespace ModuleName\RecordDriver;
 class SolrMarc extends \VuFind\RecordDriver\SolrMarc
 {
  /**
   * Get the record ID of the current record.
   *
   * @return string
   */
  public function getRecordID() {
      return isset($this->fields['recID']) ?
         $this->fields['recID'] : '';
    }
 }

4. Customize the template where you want to use that field by copying the appropriate files into your custom theme.

 cd $VUFIND_HOME/themes
 mkdir ThemeName
<?php
return array(
    'extends' => 'bootstrap3'
);
  Example:
    <? $recordID = $this->driver->getRecordID(); if (!empty($recordID)): ?>
    <tr>
      <th><?=$this->transEsc('Record ID')?>: </th>
       <td property="RecID"><?=$this->escapeHtml($recordID)?></td>
     </tr>
    <? endif; ?>