The Portal is an interface to search and display Registry Objects from the RDA Registry, with the ability to display links and relationships between registry objects and external resources. The Portal has many additional functionality to the RDA Registry that is independent and is designed to be decoupled with the RDA Registry, so that it can serve a different registry system, provided the interface is relatively the same
Module / Plugin architecture
The portal (like the registry counterpart) can be extended with portal-specific modules or apps. The portal modules are designed to be plug and play and enable contribution by third parties. For example, the
profile module, released along with Release 15 enables Portal to use the registry's authentication system with additional social logins capability to enable a user profile section. This profile module comes with it's own controllers and model, so that it can be removed or extended easily without major changes to the Portal itself.
Some notable modules
registry_objectmodule that belongs to the portal, located at
applications/portal/registry_objectis a Portal module that viewing and searching reading registry objects from the RDA Registry and the SOLR index.
groupmodule enables Contributor Pages viewing and editing via a CMS
theme_pagemodule enables viewing and creating Theme Pages via a CMS
profilemodule enables logins to the Portal and MyRDA functionality
Viewing a registry object
The portal will use all of the information available in the Registry Object API in order to display the registry object accordingly. For more information on how to write a new registry object handler, please refer to the guide.
The portal default display and search model is registry_object, this is defined in applications/portal/core/config/config.php. For more information on how to use a different display and search model (that is used to customise the Portal for different type of data), please refer to the guide.
The portal registry_object model has an internal registry object called _ro.php (applications/portal/registry_object/models/_ro.php) that is encapsulated by the registry_objects model (applications/portal/registry_object/models/registry_objects.php).
Everytime an object of _ro is initialised, portal requests the registry for all the information regarding this given registry object id and build an object of its own.
$ro = new_ro(12765); //this will instantiate a new object with all the available resource from the registry object API echo $ro->core[’title’]; //this will return the title for the registry object var_dump($ro->descriptions); //this will give us a list of all the descriptions and their type for this registry object
The process is simplified with the registry_objects model. We can simply instantiate a new object by
$this->load->model('registry_objects', 'ro'); $ro = $this->ro->getByID(12765); //returns the _ro object with ID 12765 $ro = $this->ro->getByKey(‘abc’); //returns the _ro object by key $ro = $this->ro->getBySlug(‘fish’); //returns the _ro object by the URL friendly slug
Searching for registry objects
The portal make extensive use of the
solr.php library located at
engine/libraries/Solr.php for searching. The portal delivers a search page that is powered by AJAX and the AngularJS framework to interact with SOLR and deliver search results.
Example: a simple search
$this->load->library('solr'); # loading the SOLR library for use $this->solr->setOpt('q', 'fish'); # setting the parameter of q to fish $result = $this->solr->executeSearch(); # $result now contains the SOLR search result of fish
Example: a simple facet
$this->load->library('solr'); $this->solr->setOpt('q', 'fish'); $this->setFacetOpt('field', 'class'); # translates to facet.field=class in SOLR $this->setFacetOpt('field', 'type'); # translates to facet.field=type in SOLR $result = $this->solr->executeSearch(); # $result now contains the SOLR search result of fish $facets = $this->solr->getFacet(); # $facets now contains the facet_counts return value of the SOLR search, this will contain both class facet and type facet $class_facets = $this->solr->getFacetResult('class'); # $class_facets will only contain the facet counts for the class facet
Searching and Facetting functionality is made available via the SOLR indexed fields. The indexed fields are found at the our solr schema file, the latest is located at
A Template is used to define the layout of portal pages and the global look and feel. Currently, ARDC offers 1 pre-made template dubbed
omega which is available at
Custom templates can be created and used by updating the template configuration option at
$config['default_template'] = 'omega';
omega template makes heavy use of the Blade Engine to render the page, however custom templates can utilise any rendering engine. For example, CodeIgniter's own view or template parser could be utilised to achieve a similar effect to the
Interaction with the RDA Registry
The Portal viewing and displaying of registry object relies heavily on the use of an API exposed by the RDA registry. For more information on this interaction, refer to our Portal & Registry Concept page.
The Portal can be extended to not rely on this RDA Registry API and can display an entirely different metadata structure. For more information on how to do this, refer to our tutorial.