Publicação que apareça ao mesmo tempo o título e as palavras-chave em inglês e português

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.

1 curtida

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.