2009-11-12 4 views
11

Ich schreibe meine eigene Komponente für Joomla 1.5. Ich versuche herauszufinden, wie man einen "Alias" (freundlicher URL-Slug) für den Inhalt, den ich hinzufüge, erzeugt. Mit anderen Worten, wenn der Titel "Der Artikeltitel" ist, würde Joomla standardmäßig the-article-title verwenden (Sie können es bearbeiten, wenn Sie möchten).Gibt es eine Joomla-Funktion, um das Feld 'Alias' zu generieren?

Gibt es eine eingebaute Joomla-Funktion, die das für mich tun wird?

Antwort

30

Zeile 123 von libraries/joomla/database/table/content.php implementiert JFilterOutput::stringURLSafe(). Geben Sie die Zeichenfolge ein, die Sie als "alias-freundlich" festlegen möchten, und Sie erhalten die gewünschten Informationen zurück.

+0

Vielen Dank! Genau das, was ich gesucht habe. – DisgruntledGoat

+9

Es heißt 'JoApplication :: stringURLSafe()' in Joomla 2.5. –

+5

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

3

Wenn Sie versuchen, einen Alias ​​für Ihre erstellte Komponente zu generieren, ist es sehr einfach. Angenommen, Sie haben click on save oder apply button in Ihrer erstellten Komponente oder nehme an, Sie alias durch Ihre Kachel machen wollen, dann diese Funktion nutzen:

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

Jetzt können Sie es in die Datenbank einfügen.

1

Es ist einfach PHP.

Hier kann die Funktion von Joomla 1.5 Quelle:

Hinweis habe ich die zwei Zeilen aus kommentiert. Sie können die Funktion wie

$ 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; 
    }