Problema na geração de url's amigáveis no módulo de notícias em destaque.(mod_chamadas)
Closed this issue · 11 comments
Boa tarde, estou com um problema quando habilito as url's amigáveis. O módulo de rescrita de url está ativado no administrador e o .htacess configurado, tanto que funciona todos os links do site em modo amigável menos o do módulo de notícias da página inicial (mod_chamadas). A construção do link da notícia fica quebrada desse tipo:
https://dominio/novojoomla/?id=705 clica e dá 404 categoria não encontrada
Tentei várias configurações, testei várias versões aqui além de outras tentativas sem sucesso. Alguém já passou por isso? A única solução que encontrei foi instalar outro módulo de notícias (extensão), aí funcionou perfeitamente a url amigável, mas queria usar o padrão mesmo. Se for um erro que só acontece comigo e tiverem alguma sugestão de correção me manda um help no e-mail rsss ( mr1maskot@gmail.com ) Agradeceria! valeu!
Tentei comitar, mas por algum motivo nao foi.
no arquivo mod_chamadas/helper.php
alterar a função getLinks.
public static function getLink($params, $fields = array('simple', 'menu', 'article'), $content_item = false, $isJoomlaArticle = true )
{
$simple = $fields[0];
$menu = $fields[1];
$article = $fields[2];
$link = '';
if( $params->get($simple, '' ) != '' )
{
$link = str_ireplace('{SITE}/', JURI::root(), $params->get($simple ) );
}
elseif( $params->get($menu, '' ) != '' )
{
$application = JFactory::getApplication();
$cms_menu = $application->getMenu();
$menu_item = $cms_menu->getItem( $params->get($menu) );
$link = JRoute::_($menu_item->link.'&Itemid='.$menu_item->id);
}
elseif( $params->get($article, '' ) != '' )
{
if(ModChamadasHelper::getjVersion() < 2)
{
$link = JRoute::_( 'index.php?option=com_content&view=article&id='. $params->get($article, '') );
}
else
{
$link = JRoute::_(ContentHelperRoute::getArticleRoute( $params->get($article, '')));
}
}
elseif($content_item && $isJoomlaArticle )
{
if(ModChamadasHelper::getjVersion() < 2)
{
$link = JRoute::_( 'index.php?option=com_content&view=article&id='.$content_item->id );
}
else
{
$link = JRoute::_(ContentHelperRoute::getArticleRoute( $content_item->id, $content_item->catid ));
}
}
elseif($content_item)
{
if(@isset($content_item->link))
$link = $content_item->link;
}
return $link;
}
Caro...
Achei a solução no grupo do google da equipe: [https://groups.google.com/forum/#!msg/joomlacalango/pThbduX6uZs/VeFMQfaaCAAJ;context-place=forum/joomlacalango]
Seguinte:
- Vá no arquivo modules/mod_chamadas/helper.php
- Altere, nas linhas 99 e 110 o sinal de ">" para o de "<" (nas duas linhas ele está testando se a versão é MAIOR QUE 2, quando na verdade deveria ser MENOR QUE 2)
- Salve o arquivo e seja feliz!
Tenho enfrentado esse problema em vários sites.
Mesmo fazendo a correção do código, nem sempre resolve.
Pelo visto, esse mesmo problema acontece em outros módulos, não somente no mod_chamadas.
Não sei se é somente nessas duas linhas o problema.
Talvez o pessoal do projeto possa dar uma luz e corrigir ao menos esse erro no código, pois a grande maioria dos usuários não é de programadores...
@mlrmelo a dica do < funcionou pra mim. Estou começando o projeto agora e fazendo alguns testes. Mas pelo que você falou é um problema que ocorre em outros módulos, se souber de algo nos avise por gentileza. Valeu cara!
Pessoal...
Estou enfrentando um problema no mod_chamadas que está me tirando o sono...
Existe um bug (já reportada a solução) para o mod_chamadas (arquivo helper.php) que, quando utilizamos URL's amigáveis e Mod_Rewrite, ele fica redirecionando para a página inicial.
A solução proposta é, nas linhas 99 e 110, substituir o "> 2" por "< 2" (aqui ele está verificando a versão do helper.php, se é anterior ou posterior à versão 2).
Pois bem... Fiz a correção e resolveu QUASE tudo...
Entretanto, há mod_chamadas que resolveu e há mod_chamadas que não resolveu (no mesmo site).
Fui olhar os logs e descobri que o erro ocorre na linha 95, com a seguinte mensagem:
PHP Notice: Trying to get property of non-object in /var/www/****/modules/mod_chamadas/helper.php on line 95, referer: http://www.****.***.br/
Ao olhar o código, percebi que essa linha está dentro de um teste (abaixo, $link = JRoute::_($menu_item->link.'&Itemid='.$menu_item->id);):
public static function getLink($params, $fields = array('simple', 'menu', 'article'), $content_item = false, $isJoomlaArticle = true )
{
$simple = $fields[0];
$menu = $fields[1];
$article = $fields[2];
$link = '';
if( $params->get($simple, '' ) != '' )
{
$link = str_ireplace('{SITE}/', JURI::root(), $params->get($simple ) );
}
elseif( $params->get($menu, '' ) != '' )
{
$application = JFactory::getApplication();
$cms_menu = $application->getMenu();
$menu_item = $cms_menu->getItem( $params->get($menu) );
$link = JRoute::_($menu_item->link.'&Itemid='.$menu_item->id);
}
elseif( $params->get($article, '' ) != '' )
{
if(ModChamadasHelper::getjVersion() < 2)
{
$link = JRoute::_( 'index.php?option=com_content&view=article&id='. $params->get($article, '') );
}
else
{
$link = JRoute::_(ContentHelperRoute::getArticleRoute( $params->get($article, '')));
}
}
elseif($content_item && $isJoomlaArticle )
{
if(ModChamadasHelper::getjVersion() < 2)
{
$link = JRoute::_( 'index.php?option=com_content&view=article&id='.$content_item->id );
}
else
{
$link = JRoute::_(ContentHelperRoute::getArticleRoute( $content_item->id, $content_item->catid ));
}
}
elseif($content_item)
{
if(@isset($content_item->link))
$link = $content_item->link;
}
return $link;
}
Ao que parece, ele está verificando se é um item de menu.
Sei que dá pra contornar, criando um item de menu, mas isso é "quebra-galho". Imagina criar um item de menu pra cada artigo!
Assim, pergunto: Alguém sabe como resolver?
Closed!