Minha versão é OJS 3.3.0.15. Gostaria que aparecesse na publicação o título e as palavras-chave tanto em inglês quanto em português (ao mesmo tempo). Seria possível? Já fiz a alteração na parte de idiomas, consigo preencher e e salvar as alterações, mas elas não aparecem na publicação.
Existem duas formas de fazer isso.
A primeira é editando o arquivo ‘templates/frontend/objects/article_details.tpl’ do próprio sistema do ojs, mas isso refletirá em todas as revistas do mesmo portal.
as modificações são:
para o título, primeiro em portugês e em seguida em inglês, substitua
{$publication->getLocalizedTitle()|escape}
</h1>
{if $publication->getLocalizedData('subtitle')}
<h2 class="subtitle">
{$publication->getLocalizedData('subtitle')|escape}
</h2>
{/if}
pelas linhas
{assign var="fullTitles" value=$publication->getFullTitles()}
<!-- Título e Subtítulo em Português -->
{if $fullTitles.pt_BR}
<h1 class="page_title">
{$fullTitles.pt_BR|escape}
</h1>
{if $publication->getLocalizedData('subtitle', 'pt_BR')}
<h2 class="subtitle">
{$publication->getLocalizedData('subtitle', 'pt_BR')|escape}
</h2>
{/if}
{/if}
<br>
<!-- Título e Subtítulo em Inglês -->
{if $fullTitles.en_US}
<h1 class="page_title">
{$fullTitles.en_US|escape}
</h1>
{if $publication->getLocalizedData('subtitle', 'en_US')}
<h2 class="subtitle">
{$publication->getLocalizedData('subtitle', 'en_US')|escape}
</h2>
{/if}
{/if}
para o caso das palavras-chave, substitua
{* Keywords *}
{if !empty($publication->getLocalizedData('keywords'))}
<section class="item keywords">
<h2 class="label">
{capture assign=translatedKeywords}{translate key="article.subject"}{/capture}
{translate key="semicolon" label=$translatedKeywords}
</h2>
<span class="value">
{foreach name="keywords" from=$publication->getLocalizedData('keywords') item="keyword"}
{$keyword|escape}{if !$smarty.foreach.keywords.last}{translate key="common.commaListSeparator"}{/if}
{/foreach}
</span>
</section>
{/if}
por
<!-- Palavras-chave em Português -->
{if $keywordsPt|count > 0}
<section class="item keywords">
<h2 class="label">
{translate key="article.subject"}
</h2>
<span class="value">
{foreach $keywordsPt as $index => $keyword}
{$keyword|escape}{if !$smarty.foreach.keywordsPt.last}{translate key="common.commaListSeparator"}{/if}
{/foreach}
</span>
</section>
{/if}
<!-- Palavras-chave em Inglês -->
{if $keywordsEn|count > 0}
<section class="item keywords">
<h2 class="label">
<b>Keywords</b>
</h2>
<span class="value">
{foreach $keywordsEn as $index => $keyword}
{$keyword|escape}{if !$smarty.foreach.keywordsEn.last}{translate key="common.commaListSeparator"}{/if}
{/foreach}
</span>
</section>
{/if}
Assim, quando houverem as informações em português e inglês, o ojs se comportará assim:
e quando não houver tradução, aparecerá somente o título/palavras chaves em português. Mas isso tabém pode acarretar em outros problemas. Se houver tradução para outros idiomas, é necessário complementar o código com os idiomas correspondentes, por exemplo
'pt_BR' - Português brasileiro
'en_US' -Inglês
'es_ES' -Espanhol
etc.
Agora, a segunda forma é através da criação de um plugin genérico, que quando instalado afetará somente a revista do portal que ativar o mesmo. De certo, essa é a forma mais correta.
Verifique a documentação de criação de plguin de template:
https://docs.pkp.sfu.ca/dev/plugin-guide/3.3/en/templates
adiantando, no arquivo principal da criação desse novo plugin(php), será necessário utilizar algo assim:
class **SEU-PLUGIN** extends GenericPlugin {
public function register($category, $path, $mainContextId = NULL) {
$success = parent::register($category, $path);
if ($success && $this->getEnabled()) {
HookRegistry::register('TemplateResource::getFilename', array($this, '_overridePluginTemplates'));
}
return $success;
}
//sobreposição de arquivo da página do artigo
public function _overridePluginTemplates($hookName, $args) {
$templatePath = $args[0];
if ($templatePath === 'templates/frontend/objects/article_details.tpl') {
$args[0] = '*CAMINHO PARA O ARQUIVO PERSONALIZADO*';
}
return false;
}
Para ‘CAMINHO PARA O ARQUIVO PERSONALIZADO’, vai depender da organização dos ficheiros que você deseja, sendo recomendado que o arquivo .tpl se encontre no diretório do plugin criado. Para esse novo arquivo, utilize os códigos que demonstrei no inicio da minha resposta.
A organização e layout da página fica a seu critério. Espero ter ajudado.
Prezados, boa tarde.
Implementamos aqui e deu certo!
É possível estender isso também para o Sumário listar títulos em dois idiomas?
Agradecemos.