Autore Topic: [RISOLTO] Correggere script php riconoscimento User-Agent googlebot smarphone  (Letto 207 volte)

Offline Bob200

  • Nuovo arrivato
  • *
  • Post: 4
    • Mostra profilo
Buongiorno,
sono un non professionista e mi rivolgo a chi ha un po' di
infarinatura di php per sistemare un piccolo rompicapo

Aiuto a gestire un sito joomla 1.5 per una cooperativa onlus; a parte
il problema che espongo l'installazione andrebbe bene nonostante l'età.

il template ha una struttura Warp 6 che tramite il riconoscimento dello
user-agent del browser del visitatore genera dinamicamente pagine
con rendering (css) differente a seconda del tipo di visitatore

( è un sistema alternativo all'utilizzo di pagine responsive, che si usava
all'epoca e curiosamente in altre forme sta tornando di moda di recente )

> un visitatore che dichiara uno user-agent di tipo mobile vede (riceve dal server)
pagine con la struttura css semplificata e larghezza ridotta;
questo funziona correttamente nonostante gli script siano del 2011

> un vistatore con user-agent tipico di un desktop o tablet vede pagine
in versione css completo e pagine più larghe; funziona correttamente 

> google esamina il sito usando 2 versioni di "googlebot" che hanno
lo stesso nome ("googlebot") ma dichiarazioni user-agent complete differenti
in quanto uno è googlebot per desktop, l'altro è googlebot per smartphone;
gli user-agent aggiornati di googlebot sono vsibili in questa tabella:
https://support.google.com/webmasters/answer/1061943

> gli script del 2011 del sito falliscono nel riconoscere il googlebot 2018 per smarphone,
a spanne credo nella dichiarazione contiene "android" e viene classificato
come un tablet, da cui il server gli fornisce le pagine in versione full css larghe
le pagine vengono marcate come non mobile-friend e con vari errori,
(google di fatto non vede le pagine in versione mobile che invece si vedono
correttamente con un normale smarphone)
e parrebbe penalizzate nella 
visibilità a partire da 1-2 mesi a seguito della politica "mobile first"

Invece di cambiare una intera installazione vorrei
modificare a mano gli script aggiungendo qualche riga specifica per riconoscere
correttamente il googlebot per smarphone basandosi su qualche dettaglio
della sua dichiarazione completa user-agent
che lo distingua da un generico
tablet android ed assegni alle pagine invece la renderizzazione di tipo mobile

A svolgere queste funzioni ci sono un paio di script in php (la cui sintassi capisco poco)
posizionati in questa directory (metto il link a un deposito che contiene
una generica struttura Warp 6, gemella a quella del sito):

https://github.com/arleincho/cis/tree/master/templates/yoo_shelf/warp/helpers

gli script da migliorare sono:   browser.php   e   useragent.php

https://github.com/arleincho/cis/blob/master/templates/yoo_shelf/warp/helpers/browser.php
https://github.com/arleincho/cis/blob/master/templates/yoo_shelf/warp/helpers/useragent.php

Contengono una aserie di "condizioni" sulla dichiarazione dello user-agent del visitatore
in base a cui decidono se attivare mobile.js e mobile.css (renderizzare le pagine in versione mobile)

Grazie a chi vorrà provare a leggerli  :)
Bob
« Ultima modifica: 08 Nov 2018, 09:56:28 da marine »

Offline Bob200

  • Nuovo arrivato
  • *
  • Post: 4
    • Mostra profilo
RISOLTO

Buongiorno, se qualcun'altro avesso lo stesso problema relativo all' " useragent recognition / detection "
script che non riconosceva correttamente come mobile il googlebot per smartphone,
si tratta di una installazione joomla con template basato su struttura Warp 6.x ,
in questo caso template (theme) grafico Cloud - YOOtheme , ma vale anche per altri temi dell'epoca.
( googlebot smartphone - error mobile pages not recognised - useragent detection
- recognition - joomla - Warp - theme - Cloud - YOOtheme )

La modifica era facile e rapida ma con l'aiuto di un mio amico (Carlo) che 'parla' il php.

Il file linkato sopra  'browser.php' decide se rendere pagine con css di tipo 'mobile'
quando il file 'usergent.php' attribuisce alla voce 'os' (sistema operativo)
estratta dalla stringa useragent del visitatore uno di questi  valori:   'android',  'ipod',  'iphone'
Ps.: nel file 'useragent.php' i tablet vengono invece marcati come 'os'  ' di tipo 'android.tablet'
e poi considerati da brower.php come sistemi di tipo non mobile
 
Lo script linkato sopra 'useragent.php ' recupera browser, versione e sistema operativo del visitatore
ma in modo un po' datato e semplificato e per esempio non è chiaro cosa restituisce come browser
o come os quando la stringa useragent ne contiene più di uno (es Safari, Mozilla, etc);
in coda allo script ci sono in aggiunta dei filtri per migliorare la selezione riconoscendo
alcuni sistemi specifici;

- a riga 264 circa il filtro specifico  filterGoogleAndroid per stabilire
se assegnare un 'os' (sistema operativo) di tipo 'android'
(se trova nella stringa la parola mobile) o di tipo 'android.tablet'
(se nella stringa non trova la parola mobile);
questo filto ha tra le condizioni il riconoscimente del browser safari,
funziona correttamente con vari useragent ma fallisce
(forse assegna solo mozilla come browser) nel riconoscere come un 'mobile'
lo useragent del googlebot per smartphone la cui definizione attuale
è in un link postato sopra

Abbiamo aggiunto un filtro per far riconoscere
il googlebot smartphone come visitatore di tipo mobile;
per evitare errori di sintassi php sul riconoscimento di un tipo di browser
o un altro della stringa (che ne contiene più di uno),  esegue un controllo
sullo useragent molto più semplificato, se trova la parola ' nexus '
(in pratica ' Nexus ', ad inzio script c'è una funzione che sostituisce
le maiscole nello useragent con lettere minuscole) decide di assegnare
a 'os' (sistema operativo) la variabile 'android' (sistema di tipo mobile);
( se la definizione del bot cambierà in futuro, non riportando più la citazione
dei sistemi Nexus, il filtro andrà rimodificato, ad esempio metendo
una o più condizioni semplici tra cui sulla presenza della parola 'mobile')

- alla riga 176 di useragent.php aggiunto un nuovo nome di filtro
nell'elenco dei filtri già citati (posizionato al secondo posto della lista):
'filterGoogleBotSmartphone2018',

- alla riga 272 circa ( di seguito al  filterGoogleAndroid  ) il filtro:

/**
* Googlebot smartphone 2018 - recognition as a mobile device - by Carlo
*/

public function filterGoogleBotSmartphone2018(&$userAgent) {
            if (strpos($userAgent['string'], 'nexus')) {
                        $userAgent['operating_system'] = 'android';
            }
}
« Ultima modifica: 08 Nov 2018, 04:33:45 da Bob200 »

Offline marine

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 4566
  • Sesso: Maschio
    • Mostra profilo
Bob200 [RISOLTO] va inserito all'inizio del titolo del tuo primo post in modo che sia subito visibile nei risultati di ricerca sia di google che delle ricerche interne al forum stesso.
Dove lo hai messo tu è praticamente inutile.

Offline marine

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 4566
  • Sesso: Maschio
    • Mostra profilo
Bob200 [RISOLTO] va inserito all'inizio del titolo del tuo primo post in modo che sia subito visibile nei risultati di ricerca sia di google che delle ricerche interne al forum stesso.
Dove lo hai messo tu è praticamente inutile.

Questa volta l'ho inserito io, tieni presente queste indicazioni per i post futuri, grazie.

Offline Bob200

  • Nuovo arrivato
  • *
  • Post: 4
    • Mostra profilo
Ok grazie  :D

 

Torna su