Dynamiske links til nyhedslister i OPAC’en, ver. 2

I august 2009 smed jeg opskriften på en lille stump PHP til generering af en dynamisk dato i nyhedslister til OPAC’en her på bloggen. Dengang medtog scriptet kun sidste måneds nyheder. Siden da er det blevet opdateret til at medtage både sidste og indeværende måneds nyheder, og der er også lavet en JavaScript version.

Implementering af PHP scriptet:

Opskriften er næsten identisk med den gamle, se forklaring her.

Sådan konstrueres de funktioner, der udregner månederne:

<?php
// Display last month
function showmonth() {
	if (date("n") == 1) {
		echo date("Y")-1 . "12";
	} elseif (date("n") >= 2 && date("n") <= 9) {
		echo date("Y") . "0" . date("n")-1;
	} else {
		echo date("Y") . date("n")-1;
	}
}

// Display the current month
function showcurr_month() {
	if (date("n") <= 9) {
		echo date("Y") . "0" . date("n");
	} else {
		echo date("Y") . date("n");
	}
}
?>

Sådan sættes funktionerne ind i et givent link (her en nyhedsliste over “romaner”):

<a href="https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&amp;data=scode_ccl=(ad%3D<?php showmonth() ?>%3F%2520eller%2520ad%3D<?php showcurr_month() ?>%3F)%2520og%2520bh%3Dvo%2520og%2520ma%3Dte%2520og%2520bh%3Droman%20&amp;request_attr_sortformat=1%20&request_attr_defaultpage=20%20&rec=0">Romaner</a>

Implementering af JavaScriptet:

Hent filen nyhedslister.js her.

Scriptet er noget værre klyt, men det virker. Hele nyhedslisten er hard coded i .js filen for at få det til at virke på OPAC’ens forside, så hvis der skal rettes links eller søgninger til, skal de rettes i denne fil. Heri rettes også basis URL’en, således at søgningen foretages i din og ikke Horsens Biblioteks OPAC. Linje 35 rettes således til dit eget domæne og HTGROUP:

var basic_url = 'https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&data=scode_ccl=';

Scriptet placeres på din webside, hvor det ønskes med <script> tagget:

<script src="nyhedslister.js" type="text/javascript"></script>

Generering af links til OPAC:

… er generelt noget værre hejs, fordi OPAC’en ikke automatisk genererer en URL pr. faustnr. Det ville ellers gøre livet en hel del lettere for både brugere og personale. Derfor må man gå en omvej.

Linksene i nyhedslisterne er således genereret med dette lille værktøj, der er beregnet til at lave links ind i Horsens Biblioteks OPAC.

ÆØÅ og andre specialtegn
Specialtegn som f.eks. ÆØÅ kan volde problemer i links, fordi de skal URL encodes. I den sammenhæng har W3schools.com en nyttig URL encoding reference her (scroll lidt ned på siden).

Dynamiske links til sidste måneds nyheder i OPAC’en

For nylig har vi på Horsens kommunes bibliotekers website implementeret en række lister  med dynamiske links til sidste måneds anskaffelser i bibliotekets DDELibra baserede OPAC. Listerne kan i høj grad erstatte Axiell’s modul til DDELibra, “Publicering af lister” (se produktspecifikation i PDF format her). Her er opskriften.

Du skal bruge:

Et website, der er programmeret i PHP med fuld adgang til front end koden.

Det er en fordel at have adgang til en “link-generator” til OPAC’en, så du nemt kan omdanne CCL søgninger til links. Se f.eks. Horsens kommunes bibliotekers link-generator her.

Fremgangsmåde:

De links, vi konstruerer til en nyhedsliste, består af:

  • en statisk del, nemlig den emneafgrænsende del af CCL søgningen.
  • en dynamisk del, nemlig den tidsafgrænsende del af CCL søgningen.

Det er den tidsafgrænsende del, vi skal kode i PHP. Vi har valgt at tidsafgrænse nyhedslisterne til sidste måned. For at få fat i datoen samt få den afgrænset til sidste måned, hverken mere eller mindre, opretter vi en funktion, der ser således ud:

PHP kode:

  1. <?php
  2. function showmonth() {
  3. if (date("n") == 1) {
  4. echo date("Y")-1 . "12";
  5. } elseif (date("n") >= 2 && date("n") <= 9) {
  6. echo date("Y") . "0" . date("n")-1;
  7. } else {
  8. echo date("Y") . date("n")-1;
  9. }
  10. }
  11. ?>


Forklaring:
3) Hvis indeværende måned er januar, (4) udskrives december måned sidste år. (5) Men hvis indeværende måned er mellem februar og oktober, (6) udskrives indeværende årstal og sidste måneds nummer som 1 decimal. (7) Ellers (8) udskrives indeværende årstal og sidste måned.

Det var selve beregningen af funktionen. Nu skal vi kalde funktionen som en afgrænsende dato i den link-genererede CCL-søgning. Det gøres med <?php showmonth() ?>. Et link til listen over sidste måneds anskaffelser af krimier kommer dermed til at se således ud:

Selve linket: (Bemærk! Linien er brudt aht. læsbarheden. Linket må IKKE brækkes i stykker over flere linier)

  1. <a href="https://www.bibfolk.horsens.dk/sites/WWW/pub/search.html?doaction=search&
    data=scode_ccl=bh%3D<?php showmonth() ?>%3F%2520og%2520bh%3Dvo%2520og%2520
    ma%3Da%2520og%2520bh%3Dkri%20&request_attr_sortformat%3D2%20&
    request_attr_defaultpage%3D20%20&rec%3D0">Krimier</a>


There you go. God fornøjelse. Hvis du har forslag til forbedringer, hører jeg gerne nærmere.