You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Näkymän ohjelmakoodi sijaitsee moduuleihin jaoteltuna hakemistossa /module. Näistä tärkein on Finna, joka perii VuFind-moduulin toiminnot. Paikallisia muutoksia voi toteuttaa FinnaCustom-moduuliin, joka perii Finna-moduulin. Kooditiedostojen lisäksi tulee muistaa päivittää FinnaCustom-moduulin konfiguraatio, jotta paikallinen koodi ladataan käyttöön.

Huom: FinnaCustomissa kannattaa päivitettävyyden vuoksi korvata mahdollisimman vähän Finna-moduulin toiminallisuuksia. Esimerkiksi jos on tarpeen muuttaa yhtä metodia, paikalliseen tiedostoon sijoitetaan ainoastaan tämä metodi. Lisäksi yliajetussa metodissa kannattaa yleensä kutsua Finna-moduulia.

Esimerkki: lisätään Marc-tietueajuriin uusi metodi, jota kutsutaan tietuesivulla.

  • Lisätään tiedostoon /module/FinnaCustom/config/module.config.php viite omaan paikalliseen tietueajuriin (esim. 'solrmarc' => 'FinnaCustom\RecordDriver\Factory::getSolrMarc', ks. /module/Finna/config/module.config.php):

    <?php
    namespace FinnaCustom\Module\Configuration;
    $config = [
        'vufind' => [
            'plugin_managers' => [
                'recorddriver' => [
                    'factories' => [
                        'solrmarc' => 'FinnaCustom\RecordDriver\Factory::getSolrMarc',
                    ],
                ],
            ]
        ]
    ];
    return $config;


  • Luodaan tiedosto /module/FinnaCustom/srs/FinnaCustom/RecordDriver/Factory.php ja lisätään tiedostoon metodi getSolrMarc. Samaan tapaan kuin Finna-moduulin Factoryssä:

    <?php
    namespace FinnaCustom\RecordDriver;
    use Zend\ServiceManager\ServiceManager;
    
    class Factory extends \Finna\RecordDriver\Factory
    {
        /**
         * Factory for SolrMarc record driver.
         *
         * @param ServiceManager $sm Service manager.
         *
         * @return SolrMarc
         */
        public static function getSolrMarc(ServiceManager $sm)
        {
            $driver = new SolrMarc(
                $sm->getServiceLocator()->get('VuFind\Config')->get('config'),
                null,
                $sm->getServiceLocator()->get('VuFind\Config')->get('searches'),
                $sm->getServiceLocator()->get('VuFind\SearchResultsPluginManager'),
                $sm->getServiceLocator()->get('VuFind\Config')->get('datasources')
            );
            $driver->attachILS(
                $sm->getServiceLocator()->get('VuFind\ILSConnection'),
                $sm->getServiceLocator()->get('VuFind\ILSHoldLogic'),
                $sm->getServiceLocator()->get('VuFind\ILSTitleHoldLogic')
            );
            $driver->attachSearchService($sm->getServiceLocator()->get('VuFind\Search'));
            return $driver;
        }
    }
    

     

  • Luodaan tiedosto /module/FinnaCustom/srs/FinnaCustom/RecordDriver/SolrMarc.php ja lisätään tänne uusi metodi:

    <?php
    namespace FinnaCustom\RecordDriver;
    class SolrMarc extends \Finna\RecordDriver\SolrMarc
    {
        use \Finna\RecordDriver\SolrFinna;
        public function localTest()
        {
            return "localTest";
        }
    }
  • Metodia voi kutsua tietuesivun sivupohjassa templates/RecordDriver/SolrDefault/core.phtml:

     <?= $this->driver->localTest(); ?>

     

Virhelokin tarkastelu

Näkymien tuottamat virheilmoitukset tallentuvat virhelokiin, jonka tarkastelusta voi olla apua näkymän virhetilanteissa. Nämä voivat johtua esimerkiksi tiedostonhallinnan kautta tehdyistä ohjelmakoodin virheistä tai päivityksen piiristä poistetusta paikallisesta tiedostosta.

Virheloki avautuu omaan ikkunaansa klikkaamalla "Avaa virheloki" -nappia hallintaliittymän etusivulta:

Lokiin tulostetaan käyttämällä PHP:n 'error_log' -komentoa:

<? error_log("testi"); ?>

Yllä oleva esimerkki toimii *.php -tiedostoissa ja sivupohjissa.

Loki päivittyy automaattisesti ja siinä näytetään kaikkien organisaatioiden näkymien tuottamat PHP virheet ja varoitukset. Tarkasteltavan näkymän virheilmoitukset voi erotella käyttämällä selaimen etsi-toimintoa.

  • No labels