Url Sef在ajax模块joomla中

时间:2014-05-25 10:25:27

标签: php jquery joomla module joomla-sef-urls

大家好,感谢您提前给予我的帮助。

我正在创建一个joomla模块,通过ajax显示文章,我差不多完成了,我的网址有问题。

问题是模块通过ajax调用search.php。除了网址之外,所有人都很好。

返回我的网址是: /www.miste.com/modules/mod_mymodule/index.php?option=com_content&view=article&id=12:mi-title-article&catid=10&Itemid=107

正确的事情是: / www.miste.com/index.php?option=com_content&view=article&id=12:mi-title-article&catid=10&Itemid=107

我的部分代码如下:

if ( !$_GET ) exit;
if ( !defined( "_JEXEC" ) ) define( "_JEXEC", "\r\n" ) or die('Restricted access');

define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(dirname(dirname(__FILE__))) );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require_once ( JPATH_BASE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
require_once ( JPATH_BASE.DS.'components'.DS.'com_content'.DS.'router.php');
require_once (dirname(__FILE__).'/helper.php');

/** CREATE THE APPLICATION**/
$mainframe = JFactory::getApplication('site');
/**INITIALISE THE APPLICATION**/
$mainframe->initialise();

if(modFpncrFilterArticlesHelper::validaSelect($selectDestino) && modFpncrFilterArticlesHelper::validaOpcion($opcionSeleccionada))
    {
    $tabla=$listadoSelects[$selectDestino];

        $db = JFactory::getDbo();
        $query = $db->getQuery(true)
            ->select('id, title, alias, catid')
            ->from('#__content')
            ->where('catid="'.$opcionSeleccionada.'"')
            ->where('state=1');
        $db->setQuery($query);
        $allarticles = $db->loadObjectList('id');

    // Comienzo a imprimir el select
    $InputsArticles = '';
        foreach ($allarticles as $article){

$catslug = $article->catid;
$slug = $article->id.':'.$article->alias;
$link = JRoute::_(ContentHelperRoute::getArticleRoute($slug, $catslug));            

$UrlArticle = JRoute::_( ContentHelperRoute::getArticleRoute($article->id.":".$article->alias, $article->catid), true); 
                $InputsArticles .= "<option value='". $link ."'>".$article->title."</option>";
            }
        $InputsArticles = $InputsArticles;
    }
    ?>
<select name="<?php echo $selectDestino; ?>" id="<?php echo $selectDestino; ?>" onChange='cargaContenido(this.id)'>
    <option value="0"><?php echo $article_label_active; ?></option>
    <?php echo $InputsArticles; ?>
</select>
<input type="button" name="go" value="<?php echo $button_label; ?>" onclick="check_send();" class="btn btn-success" id="send">

预先感谢您提供的帮助

2 个答案:

答案 0 :(得分:0)

当我开发模块时,我曾经使用过这样的东西。

$ article-&gt; slug = $ article-&gt; id。':'。$ article-&gt; alias; $ article-&gt; catslug = $ article-&gt; catid? $ article-&gt; catid。':'。$ article-&gt; category_alias:$ article-&gt; catid;

echo JRoute :: _(ContentHelperRoute :: getArticleRoute($ article-&gt; slug,$ article-&gt; catslug));

这是在循环内部。

答案 1 :(得分:0)

您是否尝试过不使用contenthelperroute?从模块调用时可能不适合。试试:

$link=JRoute::_("index.php?option=com_content&view=article&id={$article->id}&catid={$article->catid}");

另外,在您的代码中看起来有些乱七八糟的地方,你有$ link和$ UrlArticle - 变量,但后者从未使用过(无论如何都在你的代码片段中)