Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Problema Richiamare Url Semplificati da Link

    Ciao Ragazzi, ho girato in lungo e in largo ma non ho trovato risposta al mio problema. So come applicare la regola al file .htaccess per semplificare gli url e richiamarli tramite l'id ma non riesco a capire come richiamare le pagine tramite il titolo inserito.

    io lavoro in questo modo:
    codice:
    www.miosito.com/news.php?id=1
    Link dinamico per richiamare la pagina;
    Codice PHP:
    [url="news.php?id=<?php echo $row_rsNews['id']; ?>"]Titolo News[/url]
    riesco bene a trasformare il tutto in:
    codice:
    www.miosito.com/news/1.html
    richiamandolo da:
    Link dinamico per richiamare la pagina;
    Codice PHP:
    [url="news/<?php echo $row_rsNews['id']; ?>.html"]Titolo News[/url]

    Adesso vorrei provare a inserire il titolo e non l'id nella pagina e vorrei che da così:
    codice:
    www.miosito.com/news.php?id=titolo
    diventasse:
    codice:
    www.miosito.com/news/titolo-mia-news.html

    ma non capisco come debba essere la regola sul file htaccess e come creare il link dinamico che elimini gli spazi del titolo e metta i trattini.

    Grazie a chiunque mi aiuti!

  2. #2
    Per usare il "titolo" della pagina invece dell'id, la pagina news.php deve essere modificata affinché ciò che trova nel parametro id lo interpreti come il "titolo" della pagina e cerchi questo nel DB, supponendo tu abbia anche un campo che contiene il titolo sotto forma di slug.
    Per la seconda questione ti serve una funzione slugify, tipo questa: http://sourcecookbook.com/en/recipes...strings-in-php

  3. #3
    Utente di HTML.it L'avatar di Kups
    Registrato dal
    May 2013
    Messaggi
    20
    La regola nell'htaccess la devi modificare di modo che il pattern della regexp che esamina l'url consenta di recuperare anche i caratteri che pensi possano finire nel titolo.

    Secondariamente, il titolo lo devi convertire con php al momento in cui lo scrivi nel link.
    Se vuoi usare regole tue devi scriverti un paio di funzioncine: una che converte il titolo con i trattini e un altra che te li pulisce quando il file viene richiamato.

  4. #4
    Originariamente inviato da partime
    Per usare il "titolo" della pagina invece dell'id, la pagina news.php deve essere modificata affinché ciò che trova nel parametro id lo interpreti come il "titolo" della pagina e cerchi questo nel DB, supponendo tu abbia anche un campo che contiene il titolo sotto forma di slug.
    Per la seconda questione ti serve una funzione slugify, tipo questa: http://sourcecookbook.com/en/recipes...strings-in-php

    Partime grazie della risposta. Ho anche un parametro "titolo" che viene inserito nel db e richiamato dalla pagina. Logicamente quando la pagina lo richiama ha degli spazi o lettere accentate ecc.ecc.

    secondo te, la funzione "Slugify" basta inserirla nella pagina e modificare il $text con $titolo??
    Codice PHP:
    /** * Modifies a string to remove all non ASCII characters and spaces. */ static public function slugify($text) { // replace non letter or digits by - $text = preg_replace('~[^\\pL\d]+~u', '-', $text); // trim $text = trim($text, '-'); // transliterate if (function_exists('iconv')) { $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); } // lowercase $text = strtolower($text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) { return 'n-a'; } return $text; } 
    e come dovrei richiamare la pagina se uso un codice tipo quuesto??
    potete farmi degli esempi??

  5. #5
    Originariamente inviato da Kups
    La regola nell'htaccess la devi modificare di modo che il pattern della regexp che esamina l'url consenta di recuperare anche i caratteri che pensi possano finire nel titolo.

    Secondariamente, il titolo lo devi convertire con php al momento in cui lo scrivi nel link.
    Se vuoi usare regole tue devi scriverti un paio di funzioncine: una che converte il titolo con i trattini e un altra che te li pulisce quando il file viene richiamato.
    Grazie Kups. Diciamo che nel htaccess riesca ad inserire la regola giusta. Puoi farmi un esempio della funzione converti e pulisci titolo??

  6. #6
    Originariamente inviato da sberla_J.

    secondo te, la funzione "Slugify" basta inserirla nella pagina e modificare il $text con $titolo??
    Da quanto tempo programmi?


    Originariamente inviato da sberla_J.
    e come dovrei richiamare la pagina se uso un codice tipo quuesto??
    codice:
    <a href="news/<?php echo $row_rsNews['titolo']; ?>.html">
    <?php echo $row_rsNews['titolo']; ?>
    </a>
    Magari così?

    codice:
    <a href="news/<?php echo slugify($row_rsNews['titolo']); ?>.html">
    <?php echo $row_rsNews['titolo']; ?>
    </a>
    Anche se secondo me è meglio avere un campo aggiuntivo già formattato nel DB da richiamare direttamente:

    codice:
    <a href="news/<?php echo $row_rsNews['slug']; ?>.html">
    <?php echo $row_rsNews['titolo']; ?>
    </a>

  7. #7
    Originariamente inviato da partime
    Da quanto tempo programmi?
    Grazie ancora Partime. Purtroppo non da molto, è più una passione che cerco di approfondire un po per volta.

    Quindi modifico $text con $titolo (che è la mia variabile), inserisco il codice dentro la pagina e richiamo con la funzione che mi hai dato?


    Anche se secondo me è meglio avere un campo aggiuntivo già formattato nel DB da richiamare direttamente:

    codice:
    <a href="news/<?php echo $row_rsNews['slug']; ?>.html">
    <?php echo $row_rsNews['titolo']; ?>
    </a>
    intendi inserire nel Db, magari aggiungendo un campo, direttamente il titolo scritto così?
    es. la-mia-news

    in questo modo eviterei la funzione Slugify, giusto?

    però dovrei scrivere doppio titolo, 1 per l'url (con i trattini) e uno per la pagina (senza trattini), giusto?

  8. #8
    Originariamente inviato da sberla_J.
    intendi inserire nel Db, magari aggiungendo un campo, direttamente il titolo scritto così?
    es. la-mia-news

    in questo modo eviterei la funzione Slugify, giusto?

    però dovrei scrivere doppio titolo, 1 per l'url (con i trattini) e uno per la pagina (senza trattini), giusto?
    Sì. E' esattamente quello che fa WordPress.

  9. #9
    Originariamente inviato da partime
    Sì. E' esattamente quello che fa WordPress.
    Grazie Partime, credo che farò così!

  10. #10

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.