Include_php durch Plugin ersetzen

Hallo zusammen,

Der Wechsel auf Smarty 3 bei der neuesten OJS-Version (3.1.2.1) und der Wegfall von include_php hat mich eiskalt erwischt.
Jetzt versuche ich die von mir damit gemachten Erweiterungen an meiner Installation mit einem Plugin umzusetzen - und hänge fest.
Ich hatte bisher die templates/workflow/stageParticipants.tpl via include_php so erweitert, dass dort ein paar zusätzliche Buttons eingeblendet wurde.
Jetzt habe ich ein Generic-Plugin gebaut das eine Funktion enthält die mir das nötige Markup erzeugt das ich in die Seite inblenden möchte.
Was ich einfach nicht hinbekomme ist es die Daten aus dem Plugin in die Seite bzw. das Template zu übernehmen.
In der Plugin-Anleitung wird in diesem Beispiel https://docs.pkp.sfu.ca/dev/plugin-guide/en/examples-get-data-template
der interne Wert aus dem Plagin an den TemplateManager übergeben.

$templateMgr->assign(‘internalIssueId’, $internalIssueId);

Aber im Template wird mit

{$internalIssueId}

nichts ausgegeben.
Mache ich da beim Zugriff im Template etwas falsch? Oder funktioniert das überhaupt nicht so wie ich mir das vorstelle?

Vielen Dank
Gruß
Gerhard

Hallo @ul2c,

bei mir funktiniert der Code (OJS 3.1.2), wenn ich die Zeile

$contextId = Application::get()->getRequest()->getContext()->getId();

auskommentiere und die contextId anders hole,z.B.

if ($request = Application::getRequest()) {
$context = $request->getContext();
$contextId = $context ? $context->getId() : CONTEXT_SITE;
}

Stehen denn die Werte in den plugin_settings? Vielleicht ist ja beim Eintragen der Werte etwas schief gegangen?

viele Grüße,
Carola

Hallo @carola ,
danke für deine Antwort.
vieleicht habe ich mein Problem falsch beschrieben.
Mir geht es nicht darum etwas aus den Plugin-Settings zu holen, sondern ich versuche nur etwas in einem bestehendem Template zusätzlich anzuzeigen.
Ich habe also kein eigenes Template sondern versuche im Standard-Template etwas zu ergänzen.
Ist das der Fehler?
Kann ich nur in eigenen Templates zusätzliche Werte verwenden die z.B. mit einem Plugin so hinzugefügt wurden:

im Plugin:
$templateMgr->assign(‘myTst’, $altexTestValue);

im Template:
{$myTest}

Danke
Gruß Gerhard

Hallo @ul2c,

nein, man kann auch bestehenden Templates Variablen hinzufügen. Dann muss man aber natürlich das bestehende Template verändern, um etwas mit den Variablen zu machen. Und wenn man an die Templates nicht rankommt, dann kann man sie nur ersetzen.

Ich verstehe immer noch nicht, was nicht funktioniert. Bei mir klappt folgendes:

HookRegistry::register('TemplateManager::display',array(&$this, 'addVariableToIssueTemplate'));		


public function addVariableToIssueTemplate($hookName, $args) {
$templateMgr = $args[0];
$template = $args[1];

if ($template == 'frontend/pages/issue.tpl') {
     $templateMgr->assign('myTest', "neuer Text in Template");
}
}

Vielleicht kopiert du mal deinen Code hier rein?

viele Grüße,
Carola

im Plugin:
$templateMgr->assign(‘myTst’, $altexTestValue);

im Template:
{$myTest}

Da fehlt das “e” im Variablennamen.

Hallo Carola,
kann es sein, dass das nur in Frontend-TTemplates funktioniert?
Wenn ich es im frontend/pages/indexJournal.tpl versuche klappt es.
Wenn ich es im /lib/pkp/templates/controllers/tab/workflow/stageParticipants.tpl versuche klappt es nicht.

Weisst du ob ich für Backend-Templates noch irgend etwas zusätzlich/anders machen muss? Oder muss ich mich einfach (von dem sowieso nicht ganz unproblematischen) Gedanken verabschieden etwas in die Backend-Seiten einbauen zu wollen verabschieden?

Gruß
Gerhard

p.s.
Vielen Dank übrigens für dein Engagement und deine Geduld mir bei meinem Problem zu helfen.

Hallo @ul2c,

Hilft das hier weiter?

Hallo @carola,
ich habe es jetzt erst mal aufgegeben und eine client-seitige Lösung mit einem eigenen Template und einem REST-Service gebaut.
Ist nicht ganz so wie ich es wolltem aber es funktioniert erst mal.
Vielleichrt versuche ich mich später mal wieder an dem Problem.
Auf jeden Fall vielen Dank für deine Hilfe. Ich hab durch deine Hinweise viel gelernt.
Gruß
Gerhard