【问题标题】:Is there a Joomla function to generate the 'alias' field?是否有生成“别名”字段的 Joomla 函数?
【发布时间】:2010-12-15 23:45:36
【问题描述】:

我正在为 Joomla 1.5 编写自己的组件。我试图弄清楚如何为我添加的内容生成一个“别名”(友好的 URL slug)。换句话说,如果标题是“文章标题”,Joomla 会默认使用the-article-title(你可以编辑它)。

是否有内置的 Joomla 功能可以帮我完成这项工作?

【问题讨论】:

    标签: joomla components alias


    【解决方案1】:

    libraries/joomla/database/table/content.php 的第 123 行实现了JFilterOutput::stringURLSafe()。传入你想要“别名友好”的字符串,它会返回你需要的。

    【讨论】:

    • 谢谢!正是我想要的。
    • 在 Joomla 2.5 中称为JApplication::stringURLSafe()
    • 在 Joomla 3.* 你应该使用 ./joomla/filter/output.php JFilterOutput:stringURLSafe($string)
    • 小心@marcanuy,您在静态方法调用JFilterOutput::stringURLSafe($string)中缺少冒号
    【解决方案2】:

    如果您尝试为您创建的组件生成别名,这非常简单。假设您创建的组件中有click on saveapply button,或者假设您想通过您的磁贴制作别名,则使用此函数:

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

    现在您可以将其插入数据库。

    【讨论】:

      【解决方案3】:

      这是简单的 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;
          }
      

      【讨论】:

        猜你喜欢
        • 2014-06-18
        • 2011-07-11
        • 2012-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 2013-05-21
        • 2013-02-12
        相关资源
        最近更新 更多