<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hi Alan,</p>
<p>Take a look at these instructions:&nbsp;<a href="http://wiki.eprints.org/w/Instructions_for_local_plugins" id="LPlnk261377" title="http://wiki.eprints.org/w/Instructions_for_local_plugins
Ctrl&#43;Click or tap to follow the link">http://wiki.eprints.org/w/Instructions_for_local_plugins</a></p>
As you're trying to do something in a plugin, it all works really well (like it was designed for this!).
<div><br>
</div>
<div>One addition to the page would be that you could call the method you're overriding if you wanted to:<br>
my $original_rendering =&nbsp;$self-&gt;SUPER::render( $things );</div>
<div>$original_rendering-&gt;appendChild( ... );</div>
<div><br>
</div>
<div>&nbsp;- if you just want to append/prepend extra nodes to the original render.</div>
<div><br>
</div>
<div>Also, when I do this, I normally name the new package e.g. <span style="font-family: Calibri, sans-serif; font-size: 14.6667px;">
EPrints::Plugin::Screen::ArchiveIDItems rather than&nbsp;<span style="font-family: Calibri, sans-serif; font-size: 14.6667px;">EPrints::Plugin::Screen::My</span><span style="font-family: Calibri, sans-serif; font-size: 14.6667px;">Items - makes it easier when you've
 got multiple archives running.</span></span></div>
<div><span style="font-family: Calibri, sans-serif; font-size: 14.6667px;"><span style="font-family: Calibri, sans-serif; font-size: 14.6667px;"><br>
</span></span></div>
<div><font face="Calibri, sans-serif"><span style="font-size: 14.6667px;">Cheers,</span></font></div>
<div><font face="Calibri, sans-serif"><span style="font-size: 14.6667px;">John</span></font></div>
<div><font face="Calibri, sans-serif"><span style="font-size: 14.6667px;"><br>
</span></font></div>
<div>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> eprints-tech-bounces@ecs.soton.ac.uk &lt;eprints-tech-bounces@ecs.soton.ac.uk&gt; on behalf of Alan.Stiles &lt;alan.stiles@open.ac.uk&gt;<br>
<b>Sent:</b> 22 April 2016 17:01<br>
<b>To:</b> eprints-tech@ecs.soton.ac.uk<br>
<b>Subject:</b> [EP-tech] Replace an EPrints Function</font>
<div>&nbsp;</div>
</div>
<div>
<div>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Hi All,</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
I&#8217;m trying to programmatically amend the EPrints::Plugin::Screen::Items screen.</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
We (one of my predecessors) have already replaced the render function with a local one using
</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
undef &amp;EPrints::Plugin::Screen::Items::render;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
##Define new method and assign to exiting method</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
*EPrints::Plugin::Screen::Items::render = \&amp;local_render;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
So I could just amend the local_render to modify the doc_fragment as necessary whilst it gets built, but I&#8217;d like to do it in a more plugin-friendly way,&nbsp; so, intercept the call to render as above, but then actually be able to call the original render function.</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Thus far I&#8217;ve managed to send the (dev) server into several infinite loops &#8211; any suggestions for how to achieve it, or other suggestions gratefully received!</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Cheers,</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="color:#44546A">Alan</span></p>
<p style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
&nbsp;</p>
</div>
-- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England &amp; Wales and a charity registered in Scotland (SC 038302). The Open University is authorised and regulated by the Financial Conduct Authority.
</div>
</div>
</div>
</div>
</body>
</html>