ti-enxame.com

Página de etiquetas: remova os links da imagem quando eles estão no introtexto

Estou tentando remover o link da minha imagem na página Tag (onde todo o artile com a mesma tag é exibido). A imagem é colocada com o <img> tag no introtexto, não é uma imagem de introdução.

Eu encontrei a função php correta:

$notagintrotex =strip_tags( $this->item->introtext, '<img>');
echo $notagintrotex;

Mas não consigo encontrar qual arquivo tenho que substituir. Eu já vi isso pergunta mas parece que houve algumas mudanças desde o Joomla 3.3.1. em templates/yourtemplate/html/com_tags/tag/default_items.php

1
MagTun

Ok, depois de ter uma melhor visão geral do seu problema, eis o que você precisa fazer para alcançar o que deseja:

Crie uma substituição de modelo dentro da pasta html do seu modelo, para o Componente Tags. Para fazer isso, crie a seguinte estrutura de pastas:

/ templates/yourtemplate/html/com_tags/tag /

Copie na pasta acima o arquivo:

default_items.php da pasta components/com_tags/views/tag/tmpl.

Abra este arquivo para editá-lo. Em torno da linha 80, você verá:

<?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>
    <?php echo $item->event->beforeDisplayContent; ?>           
    <span class="tag-body">
        <?php echo JHtml::_('string.truncate', $item->core_body, $this->params->get('tag_list_item_maximum_characters')); ?>
    </span>
    <?php echo $item->event->afterDisplayContent; ?>

Altere-o adicionando seu código antes de repetir o texto da descrição (por exemplo, antes da extensão "tag-body"):

<?php
$item->core_body =strip_tags( $item->core_body, '<img>');
?>

Então você terminará com algo como abaixo:

    <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>
    <?php echo $item->event->beforeDisplayContent; ?>
    <?php
        $item->core_body =strip_tags( $item->core_body, '<img>');
    ?>          
    <span class="tag-body">
        <?php echo JHtml::_('string.truncate', $item->core_body, $this->params->get('tag_list_item_maximum_characters')); ?>
    </span>
    <?php echo $item->event->afterDisplayContent; ?>

Resposta inicial:

Seu site é um pouco confuso, um pouco difícil de navegar e não existe uma maneira padrão de acessar todo tipo de conteúdo e categorias. Também acho que há um pouco de confusão na configuração, pois algumas páginas exibem as informações das tags, outras apenas as categorias e assim por diante.

Além disso, eu estava tentando acessar um dos artigos dessa lista de tags para examinar como e por que ele usa uma imagem em seu introtexto com link para sites externos, mas, embora as imagens dos artigos sejam direcionadas a sites externos, os títulos dos artigos produzem um Erro 404.

Antes de tudo, acredito que você deve refinar toda a configuração do site e dos componentes. Não sei dizer exatamente o que você precisa fazer nesta resposta - você provavelmente precisará contratar alguém para ajudá-lo a resolver isso.

Em relação ao problema com os links - verifiquei também algumas outras tags e nem todas as tags possuem links para sua descrição. Isso me leva a pensar que essas imagens específicas no introtexto estão vinculadas a esses sites externos.

Penso que, uma vez que você configurou o componente Tags para exibir o introtexto, ele apenas o usará e conterá qualquer marcação do introtexto do artigo.

Uma maneira de superar isso é usar o recurso ocultar introtexto do componente Conteúdo. Seguindo essa abordagem, você criará o mesmo conteúdo duas vezes para introtexto e texto completo. No introtexto, você usará a imagem sem o link, enquanto no texto completo poderá adicionar seu link. Definir o Joomla para ocultar o introtexto da exibição do artigo resultará em 2 blocos de textos diferentes para exibir para suas necessidades.

O introtexto sem os links para todos os layouts de blogs/listas de tags, módulos de artigos etc. e o texto completo da exibição do artigo.

Ou você pode usar os recursos de imagens do Joomla Content, na guia "Imagens e links" e definir sua imagem de introdução.

No entanto, lembre-se de que a saída de cada componente também é controlada por qualquer possível substituição de modelo para cada componente.

1
FFrewin

Parece-me que você precisa criar um plug-in de conteúdo (é bastante fácil) remover as tags. Veja Criando um plugin de conteúdo e insira seu código no arquivo php. O evento que deve disparar é provavelmente o evento onContentPrepare, ou talvez onContentBeforeDisplay.

1
GDP