Joomla分页URL不包括view = viewname

时间:2013-03-04 00:05:23

标签: joomla pagination

我在自定义Joomla组件上进行了分页设置。为了避免页面长的解释,我们做了一些错综复杂的iframe嵌入和转发掩码。这是组件前端的分页。

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

http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page-2.html?tmpl=component&view=microsite

然而,当我实际点击第2页的分页链接时,会丢弃view = microsite,这会导致问题。如何调整它以使其不会掉落view = microsite?

原始网址为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;
    }

再次,这里的部分代码,但我不知道该怎么开始发布以回答这个问题所以请我发布任何代码但指出我正确的方向,谢谢。

2 个答案:

答案 0 :(得分:1)

在该视图中“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)。重要的是视图输入。此外,如果您没有为该视图使用控制器(意味着您正在使用该组件的默认控制器),请将控制器输入保留为输出

答案 1 :(得分:0)

如果没有SEF,你能给这个链接http://americasfavoritepuppybreeders.com/puppies/breed/labrador/page-1.html?tmpl=component&view=microsite吗?您可以尝试使用此类代码创建文件/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链接,请尝试在管理面板中的视图(微型网站)上创建链接并使用此链接。