【发布时间】:2010-12-15 23:45:36
【问题描述】:
我正在为 Joomla 1.5 编写自己的组件。我试图弄清楚如何为我添加的内容生成一个“别名”(友好的 URL slug)。换句话说,如果标题是“文章标题”,Joomla 会默认使用the-article-title(你可以编辑它)。
是否有内置的 Joomla 功能可以帮我完成这项工作?
【问题讨论】:
标签: joomla components alias
我正在为 Joomla 1.5 编写自己的组件。我试图弄清楚如何为我添加的内容生成一个“别名”(友好的 URL slug)。换句话说,如果标题是“文章标题”,Joomla 会默认使用the-article-title(你可以编辑它)。
是否有内置的 Joomla 功能可以帮我完成这项工作?
【问题讨论】:
标签: joomla components alias
libraries/joomla/database/table/content.php 的第 123 行实现了JFilterOutput::stringURLSafe()。传入你想要“别名友好”的字符串,它会返回你需要的。
【讨论】:
JApplication::stringURLSafe()。
JFilterOutput:stringURLSafe($string)
JFilterOutput::stringURLSafe($string)中缺少冒号
如果您尝试为您创建的组件生成别名,这非常简单。假设您创建的组件中有click on save 或apply button,或者假设您想通过您的磁贴制作别名,则使用此函数:
$ailias=JFilterOutput::stringURLSafe($_POST['title']);
现在您可以将其插入数据库。
【讨论】:
这是简单的 PHP。
这是来自 Joomla 1.5 源代码的函数:
注意,我已将这两行注释掉。你可以像
这样调用函数$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;
}
【讨论】: