Back to top

Autore Topic: [RISOLTO] Problema SEF - Multilingua - Next Button in Registrazione non funziona  (Letto 2204 volte)

Offline BadCluster

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo




Buongiorno a tutti


Ho un problema con il SEF nativo di Joomla (3.3.6) collegato al fatto che ho il sito in multilingua.
Il sito in questione è http://www.giocoleria.org


e tra i componenti uso ***** (ultima versione)


Spiego subito perchè non penso sia un problema di **** per tragliare la testa al toro.
Disabilitando il SEF nativo tutto funziona correttamente (quindi mi viene da escludere anche problemi con incompatibilità con Javascript vari)


Il problema è di come "monta" le URL il SEF.


Durante la registrazione di un nuovo utente, il pulsante NEXT smette di funzionare




Se guardo il codice sorgente della registrazione utente in versione ITALIANA trovo il seguente codice:


Codice: [Seleziona]
/*<![CDATA[*/
var jax_live_site = 'http://www.giocoleria.org/index.php/gorg-social-network/';
var jax_token_var='3b797652e6f5d47c44e4f3bcd5f02481';
/*]]>*/


Come potete vedere aggiunge il suffisso /gorg-social-network/ dopo l'index.php e non penso che dovrebbe esserci


nella versione INGLESE il codice cambia nuovamente e diventa così:




Codice: [Seleziona]
/*<![CDATA[*/
var jax_live_site = 'http://www.giocoleria.org/index.php/en/';
var jax_token_var='3b797652e6f5d47c44e4f3bcd5f02481';
/*]]>*/


Come potete vedere aggiunge il suffisso /en/ dopo l'index.php.
Mentre l'url corretto penso dovrebbe essere: http://www.giocoleria.org/en/index.php


Come detto in precedenza, disattivando il SEF nativo di Joomla, riprende a funzionare correttamente


Al momento ho trovato una "Pezza" per farlo funzionare ugualmente, ma ho problemi nel back-end con il componente ****.


La soluzione provvisoria è quella di aprire il file ajax.php nel seguente percorso:


/plugins/system/azrul.system/pc_includes


e ho cambiato la seguente porzione di codice da:


Codice: [Seleziona]
/*<![CDATA[*/
               
var jax_live_site = '$reqURI';
               
var jax_token_var='$tokenStr';
           
/*]]>*/


a


Codice: [Seleziona]
/*<![CDATA[*/
               
var jax_live_site = 'http://www.giocoleria.org';
               
var jax_token_var='$tokenStr';
           
/*]]>*/


in pratica sembrerebbe che la variabile $reqURI sbagli ad essere costruita in fase di SEF.


vi allego il file ajax.php e anche helper.php


Io sto uscendo matto è da 10 giorni che ci sbatto la testa e non ne vado fuori.


Qualsiasi idea o aiuto è disperatamente ben accetto!!!
edit: Rimosso riferimento a estensione commerciale.

[allegato eliminato automaticamente dopo un anno]
« Ultima modifica: 13 Nov 2014, 16:07:45 da BadCluster »

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Ciao
Ti ricordo che in questo forum non è consentito citare e chiedere supporto per problemi diretti o indiretti relativi ad estensioni commerciali. Ti rimando al supporto del produttore. Grazie della comprensione.

Offline BadCluster

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Ciao Tom, forse non mi son spiegato bene

Il problema è realtivo al SEF nativo di Joomla


non a *****

Il problema è che il SEF NATIVO con il sistema MULTILINGUA ATTIVO mi sbaglia la composizione dell'URL relativo alla REGISTRAZIONE di un NUOVO UTENTE.
« Ultima modifica: 11 Nov 2014, 09:40:43 da tomtomeight »

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Ciao
No forse sei tu che non hai capito che è vietato citare estensioni commerciali, e poi scusa se dici che non dipende dal componente perché lo citi 3, 4 volte?
Continua nella tua richiesta ma non citare componenti se credi che non c'entrino. Ok?

Offline BadCluster

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Ciao Tom, non avevo capito :)


lo citavo per dare maggiore comprensione del problema.


Comunque il problema come detto è nella registrazione utente + sef attivo + multilingua attivo

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Scusa ma la registrazione è quella nativa di joomla o del componente?

Offline BadCluster

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
penso quella nativa.. da cosa capisco la differenza?

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Il login si attiva da una voce di menù o modulo, vedile e lo saprai senza pensarci.

Offline BadCluster

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Eccomi tomtom, scusami se non ho risposto prima, ma ero alle prese con quel maledetto problema che fortunatamente ho risolto.

La soluzione non è elegante, ma fa il suo dovere, perciò la scrivo per i posteri, per chi prima o poi avesse il mio steso problema.

Il problema è legato al plugin Azrul Mambot


il file da modificare si trova in questo percorso:
Codice: [Seleziona]
http://www.miodominio.org/plugins/system/azrul.system/pc_includes/ajax.php
Questo è il codice originale dalla riga 284 alla 330 (più o meno)(solo le righe incriminate che causano problemi col SEF e Multilingua):

Codice: [Seleziona]

function _fixLangSwitcher($reqURI){
      $isLangFilter = JPluginHelper::isEnabled("system","languagefilter");
      if (!$isLangFilter){
         return $reqURI;
      }
      $uri = JFactory::getURI();
      $app = JFactory::getApplication();
      $router = $app->getRouter();
      if ($app->isSite()) {
         // setup language data
         $mode_sef    = ($router->getMode() == JROUTER_MODE_SEF) ? true : false;
         $default_lang = JLanguageHelper::getLanguages('lang_code');


         if ($mode_sef) {
            // Get the route path from the request.
            $path = JString::substr($uri->toString(), JString::strlen($uri->base()));


            // Apache mod_rewrite is Off
            //$path = JFactory::getConfig()->get('sef_rewrite') ? $path : JString::substr($path, 10);
            $path = $app->getCfg('sef_rewrite') ? $path : JString::substr($path, 10);


            // Trim any spaces or slashes from the ends of the path and explode into segments.
            $path  = JString::trim($path, '/ ');
            $parts = explode('/', $path);


            // The language segment is always at the beginning of the route path if it exists.
            $langcode = $uri->getVar('lang');


            if (!empty($parts) && empty($langcode)) {
               $langcode = reset($parts);
            }
            //set to default language
            if(empty($langcode)){
               $langcode = $default_lang;
            }
            //append language code to the request
            $reqURI = $reqURI . '/'. $langcode . '/';
         }
         else {
            $langcode= $uri->getVar('lang',$default_lang);
            //append language code to the request
            $tmpURI = new JURI($reqURI);
            $tmpURI->setVar('lang', $langcode);
            $reqURI = $tmpURI->toString();
         }
      }
      return $reqURI;


Mentre questo è come l'ho MODIFICATO


Codice: [Seleziona]
function _fixLangSwitcher($reqURI){
      $isLangFilter = JPluginHelper::isEnabled("system","languagefilter");
      if (!$isLangFilter){
         return $reqURI;
      }
      $uri = JFactory::getURI();
      $app = JFactory::getApplication();
      $router = $app->getRouter();
      if ($app->isSite()) {
         // setup language data
         $mode_sef    = ($router->getMode() == JROUTER_MODE_SEF) ? true : false;
         $default_lang = JLanguageHelper::getLanguages('lang_code');

            $langcode= $uri->getVar('lang',$default_lang);
            //append language code to the request
            $tmpURI = new JURI($reqURI);
            $tmpURI->setVar('lang', $langcode);
            $reqURI = $tmpURI->toString();

      }
      return $reqURI;


In pratica ho levato l' IF->ELSE che andava a controllare se il SEF del sito era attivato o meno e l'ho forzato ad usare il metodo della "stringa" anche se il SEF e il Multilingua sono attivi.


Questo è il risultato.


Se prima la stringa che doveva essere creata (ma che non lo faceva in modo corretto) avrebbe dovuto apparire più o meno così:


Codice: [Seleziona]
/*<![CDATA[*/
               var jax_live_site = 'http://www.miodominio.org/index.php';
               var jax_token_var='69e5e72120ce56cc4e7ec0cf39d16d11';
            /*]]>*/


ora invece se si va a guardare il codice sorgente viene fuori così:


Codice: [Seleziona]
/*<![CDATA[*/
               var jax_live_site = 'http://www.miodominio.org/index.php?lang[it-IT][lang_id]=3&lang[it-IT][lang_code]=it-IT&lang[it-IT][title]=Italian (IT)&lang[it-IT][title_native]=Italian (IT)&lang[it-IT][sef]=it&lang[it-IT][image]=it&lang[it-IT][description]=&lang[it-IT][metakey]=&lang[it-IT][metadesc]=&lang[it-IT][sitename]=&lang[it-IT][published]=1&lang[it-IT][access]=1&lang[it-IT][ordering]=0&lang[en-GB][lang_id]=1&lang[en-GB][lang_code]=en-GB&lang[en-GB][title]=English (UK)&lang[en-GB][title_native]=English (UK)&lang[en-GB][sef]=en&lang[en-GB][image]=en&lang[en-GB][description]=&lang[en-GB][metakey]=&lang[en-GB][metadesc]=&lang[en-GB][sitename]=&lang[en-GB][published]=1&lang[en-GB][access]=1&lang[en-GB][ordering]=1';
               var jax_token_var='69e5e72120ce56cc4e7ec0cf39d16d11';
            /*]]>*/


So che è "bruttissima" da vedere, ma almeno FUNZIONA!


Spero vivamente che questa spiegazione aiuti persone che hanno il mio stesso problema.

« Ultima modifica: 13 Nov 2014, 16:06:11 da BadCluster »

 



Web Design Bolzano Kreatif