Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Contenuto pagina in base a parole contenute nell'URL

    Salve!

    Non riesco a formulare del codice PHP affinché mi venga mostrato una certa parte di contenuto di una pagina in base alle parole contenute nell'URL.

    Qualcosa con questo ragionamento:
    se l'URL contiene la parola "/en/"
    allora mostra questa parte di codice/contenuto
    diversamente mostra quest'altra parte di codice/contenuto

    Tale soluzione mi serve per approntare un sito multilingue, quindi sia l'italiano che l'inglese sono presenti nella stessa pagina, ma vorrei mostrare l'inglese solo se l'URL contiene la parola "/en/", diversamente mostrare l'italiano.

    Spero di essere stato chiaro e di avere un vostro aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    310
    Se ho capito bene


    codice:
    if(strstr($var_che_contiene_url,$stringa_da_cercare)){
      $contenuto = '';
    }else{ // se non lo trova allora prendi l'altro contenuto
      $contenuto = '';
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da robyd
    Se ho capito bene


    codice:
    if(strstr($var_che_contiene_url,$stringa_da_cercare)){
      $contenuto = '';
    }else{ // se non lo trova allora prendi l'altro contenuto
      $contenuto = '';
    }
    Si, sembra proprio quella che mi serve, ma come faccio ad impostare $var_che_contiene_url?

    Vorrei che il recupero sia dinamico quando si visita la pagina e non specificarla di volta in volta. Un qualche cosa insomma che analizzi la URL.

    Nell'impossibilità di riconoscimento automatico potrei valutare anche il fatto di inserire la URL completa al posto di $var_che_contiene_url, come verrebbe?

    codice:
    if(strstr(http://www.nomesito.it/en/pagina.php)){
      $contenuto = '';
    }else{ // se non lo trova allora prendi l'altro contenuto
      $contenuto = '';
    }
    Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    310
    con questa variabile puoi prendere l'indirizzo che hai richiamato:

    $_SERVER['REQUEST_URI']

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa ma per come è fatto apache (o chi per lui) è inutile quello che vuoi fare:

    www.miosito.com/en/pagina.php

    ci si aspetta che dentro la document root ci sia una cartella en con dentro il file pagina.php.

    Così come per
    www.miosito.com/es/pagina.php

    Quindi dovresti avere una pagina.php per ogni lingua (cartella)...il che rende inutile sapere nel'url che lingua c'è.

    Discorso diverso se "sovrascrivi" il comportamento di apache nel servire le pagine (es con mod_rewrite)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da robyd
    con questa variabile puoi prendere l'indirizzo che hai richiamato:

    $_SERVER['REQUEST_URI']
    Quindi in questo modo?

    Codice PHP:
    if(strstr($_SERVER['REQUEST_URI'],en)){
      
    $contenuto '';
    }else{ 
    // se non lo trova allora prendi l'altro contenuto
      
    $contenuto '';

    è giusto come ho inserito la parloa da cercare ovvero "en"?

    Per chiarire ulteriormente, in particolare a boots, sono su CMS WordPress che "riscrive" gli URL se si cambia lingua aggiungendo dopo l'estensione del dominio "en/" e poi il nome della pagina.

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se è wp allora è un altro discorso

    Non conosco wordpress è non so se usi qualche plugin SEO, ma se nel'url ci sono altre parole (nome pagina, titolo notizie etc) non creso sia corretto usare strstr. Es:

    www.miosito.con/it/utenti.php

    strstr($_SERVER['REQUEST_URI'],'en'))

    Ti restituisce true: utenti.php

    Se i tuoi url sono SEMPRE della forma {server}/{lingua}/{url_pagina} ti conviene fare

    Codice PHP:
    $urle explode("/",$_SERVER['REQUEST_URI']);
    if(
    $urle[0] == "en"){
        
    //Contenuto inglese
    }else{
        
    //Contenuto italiano


  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da boots
    Se è wp allora è un altro discorso

    Non conosco wordpress è non so se usi qualche plugin SEO, ma se nel'url ci sono altre parole (nome pagina, titolo notizie etc) non creso sia corretto usare strstr. Es:

    www.miosito.con/it/utenti.php

    strstr($_SERVER['REQUEST_URI'],'en'))

    Ti restituisce true: utenti.php

    Se i tuoi url sono SEMPRE della forma {server}/{lingua}/{url_pagina} ti conviene fare

    Codice PHP:
    $urle explode("/",$_SERVER['REQUEST_URI']);
    if(
    $urle[0] == "en"){
        
    //Contenuto inglese
    }else{
        
    //Contenuto italiano

    Si, uso WordPress ma senza plugin speciali, quindi penso che trattare l'argomento in maniera generale come stai facendo, è OK.

    Giusta la formula {server}/{lingua}/{url_pagina}

    Ho provato ad usare il codice che hai postato fuori da WP, intanto per fare delle prove, e mi appare pagina bianca.

    Ho creato una pagina PHP con il seguente codice
    Codice PHP:
    <?php
    $urle 
    explode("/",$_SERVER['REQUEST_URI']); 
    if(
    $urle[0] == "en"){ 
        
    Contenuto inglese 
    }else{ 
        
    Contenuto italiano 
    }
    ?>
    salvandola in una directory "en", ma invece di comparire la scritta Contenuto inglese, come ho detto compare pagina bianca.

    Direi che deve funzionare prima in una soluzione normale come questa, poi potrei applicarla in WP.

    Tu che mi consigli?

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Spero che non hai scritto ESATTAMENTE così il codice

    Codice PHP:
    // es: web app dentro la cartella htdocs/tests, url pagina: [url]http://localhost/tests/en/pagina.php[/url]

    $urle explode("/",$_SERVER['REQUEST_URI']); 
    // $_SERVER['REQUEST_URI'] = "/tests/en/pagina.php"
    // $urle = Array ( [0] => [1] => tests [2] => en [3] => pagina.php )
    if($urle[2] == "en"){ 
        echo 
    "Contenuto inglese"
    }else{ 
        echo 
    "Contenuto italiano"

    Nota come viene spezzata la stringa...per questo devi essere sicuro che in tutti i tuoi link (url) la lingua deve trovarsi sempre nella stessa posizione.


    PS: Ma wordpress non ha qualche plugin per il multilingua ?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da boots
    Spero che non hai scritto ESATTAMENTE così il codice

    Codice PHP:
    // es: web app dentro la cartella htdocs/tests, url pagina: [url]http://localhost/tests/en/pagina.php[/url]

    $urle explode("/",$_SERVER['REQUEST_URI']); 
    // $_SERVER['REQUEST_URI'] = "/tests/en/pagina.php"
    // $urle = Array ( [0] => [1] => tests [2] => en [3] => pagina.php )
    if($urle[2] == "en"){ 
        echo 
    "Contenuto inglese"
    }else{ 
        echo 
    "Contenuto italiano"

    Nota come viene spezzata la stringa...per questo devi essere sicuro che in tutti i tuoi link (url) la lingua deve trovarsi sempre nella stessa posizione.


    PS: Ma wordpress non ha qualche plugin per il multilingua ?
    Ebbene si, lo ammetto, pensavo che il codice fosse giusto in quel modo, viene a galla la mia non dimestichezza in PHP.

    Funziona alla grande, almeno da un paio di prove fatte!

    Si, stò usando già un sistema per il multilingua, o meglio per la traduzione, solo che stò evitando il fatto di far tradurre tutto in automatico al plugin, e di tradurre qualcosina io, ma soprattutto di usare un unica pagina evitando di farne ogni volta 2, una con l'italiano ed una con l'inglese, molto più semplice nella preparazione, ma più elaborata nella gestione.

    Grazie di nuovo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.