About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
development:howtos:displaying_a_custom_field

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
development:howtos:displaying_a_custom_field [2020/04/14 12:05] – [Understanding VuFind Displays] demiankatzdevelopment:howtos:displaying_a_custom_field [2020/04/14 12:42] – [4. Step-by-step examples] demiankatz
Line 52: Line 52:
  
 As with code customizations, it is possible to edit templates in-place, but it is often better practice to create your own custom theme and create your custom views there -- this will make future upgrades easier. See [[development:architecture:customizing_vufind|Customizing VuFind]] for more details. As with code customizations, it is possible to edit templates in-place, but it is often better practice to create your own custom theme and create your custom views there -- this will make future upgrades easier. See [[development:architecture:customizing_vufind|Customizing VuFind]] for more details.
-===== 4. Step-by-step example (VuFind 3.x) ===== +===== 4. Step-by-step examples =====
- +
-// 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 [[indexing:adding_facets|Adding Facets]] page. // +
- +
-1. Create a custom module (if you haven't already done so) +
-   cd $VUFIND_HOME +
-   php install.php +
- +
-   * At the prompt "What module name would you like to use? [blank for none]" type in your module name +
-   * Link configuration to apache’s config.d directory per the install.php directions +
-   * Restart apache (sudo /etc/init.d/apache2 restart) +
-  +
-2. From $VUFIND_HOME enter the following code generator command: +
-   php public/index.php generate extendservice vufind/plugin_managers/recorddriver/factories/solrmarc ModuleName +
- +
-   * You should see the following:  +
- +
-   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 +
- +
-   * If you get an error like "Class ModuleName\RecordDriver\Factory does not exist", or if the files do not get written, then do the following: +
- +
-   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.  +
-  * Make sure the namespace line reads “namespace ModuleName\RecordDriver;” +
-  * Add the getter method. See below for an example, but also reference the SolrMarc.php file in /module/VuFind/src/VuFind/RecordDriver/ for more examples of getter code.   +
- +
-   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 +
- +
-  * Make the following sub-directory structure: ThemeName/templates/RecordDriver/SolrDefault/ +
-  * Put the following content in $VUFIND_HOME/themes/ThemeName/theme.config.php: +
- +
-<code> +
-<?php +
-return array( +
-    'extends' => 'bootstrap3' +
-); +
-</code> +
- +
-  * cd $VUFIND_HOME/themes/bootstrap3/templates/RecordDriver/SolrDefault/, and copy core.phtml and result-list.phtml to new theme’s SolrDefault directory +
-  * Edit core.phtml and result-list.phtml to add new fields for display. +
- +
-    Example: +
-      <? $recordID $this->driver->getRecordID(); if (!empty($recordID)): ?> +
-      <tr> +
-        <th><?=$this->transEsc('Record ID')?>: </th> +
-         <td property="RecID"><?=$this->escapeHtml($recordID)?></td> +
-       </tr> +
-      <? endif; ?> +
- +
-:!: Note that, starting with VuFind 4.0, the [[development:architecture:record_data_formatter|record data formatter]] is introduced to simplify the display templates; the example above applies to earlier versions, and adding a new field to displays requires slightly different changes in later versions. See [[https://vufind.org/wiki/development:architecture:record_data_formatter|this wiki page]] for more details. +
- +
-  * Edit local/config/vufind/config.ini to set theme ThemeName+
  
 +  * [[development:howtos:displaying_a_custom_field:vufind6_example|Example for VuFind 6.x or newer]]
 +  * [[development:howtos:displaying_a_custom_field:vufind3_example|Example for VuFind 3.x]]
 ---- struct data ---- ---- struct data ----
 ---- ----
  
development/howtos/displaying_a_custom_field.txt · Last modified: 2020/09/22 13:27 by demiankatz