2009-11-12 12 views
11

Sto scrivendo il mio componente per Joomla 1.5. Sto cercando di capire come generare un "alias" (slug URL amichevole) per il contenuto che aggiungo. In altre parole, se il titolo è "Il titolo dell'articolo", Joomla userebbe the-article-title per impostazione predefinita (puoi modificarlo se lo desideri).Esiste una funzione Joomla per generare il campo "alias"?

C'è una funzione Joomla incorporata che farà questo per me?

risposta

30

Linea 123 di libraries/joomla/database/table/content.php strumenti JFilterOutput::stringURLSafe(). Passa nella stringa che vuoi rendere "alias friendly" e restituirà ciò di cui hai bisogno.

+0

Grazie! Esattamente quello che stavo cercando. – DisgruntledGoat

+9

Si chiama 'JApplication :: stringURLSafe()' in Joomla 2.5. –

+5

In Joomla 3. * Dovresti usare ./joomla/filter/output.php 'JFilterOutput: stringURLSafe ($ string)' – marcanuy

3

Se si sta tentando di generare un alias per il componente creato, è molto semplice. Supponiamo di avere click on save o apply button nel componente creati o si supponga di voler fare alias attraverso la vostra tessera, quindi utilizzare questa funzione:

$ailias=JFilterOutput::stringURLSafe($_POST['title']); 

Ora è possibile inserirlo nel database.

1

È semplice PHP.

Qui è la funzione da Joomla 1.5 fonte:

Avviso, ho commentato le due linee di fuori. È possibile chiamare la funzione come

$ new_alias = stringURLSafe ($ your_title);

function stringURLSafe($string) 
    { 
     //remove any '-' from the string they will be used as concatonater 
     $str = str_replace('-', ' ', $string); 
     $str = str_replace('_', ' ', $string); 

     //$lang =& JFactory::getLanguage(); 
     //$str = $lang->transliterate($str); 

     // remove any duplicate whitespace, and ensure all characters are alphanumeric 
     $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str); 

     // lowercase and trim 
     $str = trim(strtolower($str)); 
     return $str; 
    } 
Problemi correlati