Joomla分页URL排除了view=viewname



我在自定义Joomla组件上设置了分页。为了避免冗长的解释,我们做了一些复杂的iframe嵌入和前向屏蔽。这是组件前端的分页。

在我的iframe中,我有一个小狗列表(来自自定义组件)。它是分页的。为了使小狗在iframe中正确显示,它必须有URL:

http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page - 2. html?tmpl=component&视图=微博

然而,当我实际点击页面2的分页链接时,它会掉落view_microsite,这会导致问题。我怎样才能调整这一点,使它不drop view=microsite?

原URL为http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page-1.html?tmpl=component&view=microsite

这个分页的代码很长,在模型,视图和view.html.php之间,所以我很难发布所有相关的代码。这是我一直在寻找的一些想法。

关于在哪里/如何做到这一点,有什么想法或提示吗?

谢谢扎克

// Get the pagination request variables
    $limit      = $app->input->get('limit', $params->get('display_num', 20), 'uint');
    $limitstart = $app->input->get('limitstart', 0, 'uint');
    $this->setState('puppies.limit', $limit);
    $this->setState('puppies.limitstart', $limitstart);
    // Load the parameters.
    $this->setState('params', $params);
    }           
/** Method to get a store id based on the model configuration state. **/
protected function getStoreId($id = '')
    {
    // Compile the store id.
    $id .= ':' . $this->getState('puppies.breed_alias');
    $id .= ':' . $this->getState('puppies.limit');
    $id .= ':' . $this->getState('puppies.limitstart');
    $id .= ':' . serialize($this->getState('puppies.filter'));
    $id .= ':' . $this->getState('puppies.featured');
    return parent::getStoreId($id);
    }
/** Method to get a JPagination object for the data set. **/
public function getPagination()
    {
    // Create the pagination object.
    $limit = (int) $this->getState('puppies.limit');
    $page = new JPagination($this->getTotal(), $this->getStart(), $limit);
    return $page;
    }
/** Method to get the total number of items for the data set. **/
public function getTotal()
    {
    return $this->items_total;
    }
/** Method to get the starting number of items for the data set. **/
public function getStart()
    {
    $start = $this->getState('puppies.limitstart');
    $limit = $this->getState('puppies.limit');
    $total = $this->getTotal();
    if ($start > $total - $limit)
        {
        $start = max(0, (int) (ceil($total / $limit) - 1) * $limit);
        }
    return $start;
    }

再次,这里的代码的一部分,但我不知道如何开始张贴的答案,所以请我会张贴任何代码,但指出我在正确的方向,谢谢。

在该视图中"adminform"底部的某个地方,应该有提交视图/控制器/令牌的所有隐藏输入。

像这样:

            <input type="hidden" name="option" value="com_puppies" />
            <input type="hidden" name="view" value="microsite" />
            <input type="hidden" name="task" value="" />
            <input type="hidden" name="boxchecked" value="0" />
            <inupt type="hidden" name="controller" value="microsite" />
            <input type="hidden" name="filter_order" value="<?php echo $this->escape($this->state->get('list.ordering')); ?>" />
            <input type="hidden" name="filter_order_Dir" value="<?php echo $this->escape($this->state->get('list.direction')) ?>" />
            <?php echo JHtml::_('form.token'); ?>

可以随意删除不需要的输入(即filter_order输入,如果处理方式不同的话)。最重要的是视图输入。另外,如果你没有为那个视图使用控制器(也就是说你正在为那个组件使用默认控制器),就不要输入控制器

你能给这个链接http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page-1.html?tmpl=component&view=microsite没有SEF吗?您可以尝试使用以下代码创建文件/templates/{$your_template}/html/pagination.php

<?php
function pagination_item_active(&$item){
    $getData = new JInput($_GET);
    $view = $getData->get('view','','string');
    $link_part = ($view == 'microsite' ? '&view=microsite' : '');
    $link = "<a title="" . $item->text . "" href="" . $item->link.$link_part  . "" class="pagenav2">" . $item->text . "</a>";
    return $link;
}
function pagination_item_inactive(&$item){
    return "<span class="pagenav">" . $item->text . "</span>";
}

我也认为你的问题在错误的链接。你是怎么得到这个链接的http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page-1.html?tmpl=component&view=microsite?如果您使用view=microsite的ready链接,请尝试在管理面板中的视图(microsite)上创建链接并使用此链接。

最新更新