2009-11-12 21 views
11

Piszę własny komponent dla Joomla 1.5. Próbuję dowiedzieć się, jak wygenerować "alias" (przyjazny URL-e) dla dodawanej przeze mnie treści. Innymi słowy, jeśli tytuł to "Tytuł artykułu", Joomla użyje domyślnie the-article-title (możesz go edytować, jeśli chcesz).Czy istnieje funkcja Joomla do generowania pola "alias"?

Czy jest wbudowana funkcja Joomla, która zrobi to za mnie?

Odpowiedz

30

Linia 123 z libraries/joomla/database/table/content.php implementuje JFilterOutput::stringURLSafe(). Podaj ciąg znaków, który chcesz uczynić "przyjaznym dla aliasów" i zwróci to, czego potrzebujesz.

+0

Dzięki! Dokładnie to, czego szukałem. – DisgruntledGoat

+9

Nazywa się 'JApplication :: stringURLSafe()' w Joomla 2.5. –

+5

W Joomla 3. * Powinieneś użyć ./joomla/filter/output.php 'JFilterOutput: stringURLSafe ($ string)' – marcanuy

3

Jeśli próbujesz wygenerować alias dla utworzonego komponentu, jest to bardzo proste. Załóżmy, że masz click on save lub apply button w swoim utworzonego komponentu lub że chcesz zrobić alias pośrednictwem płytki, a następnie użyć tej funkcji:

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

Teraz można wstawić go do bazy danych.

1

To proste PHP.

Oto funkcja z Joomla 1.5 źródło:

zawiadomieniu, mam skomentował dwie linie na zewnątrz. Możesz wywołać funkcję podobną do:

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