0

我在自定义 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;
    }

同样,这里有一部分代码,但我不知道要开始发布什么来回答这个问题,所以请我发布任何代码,但指向正确的方向,谢谢。

4

2 回答 2

1

在该视图的“管理表单”底部的某处,应该有提交视图/控制器/令牌的所有隐藏输入。

像这样的东西:

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

于 2013-03-04T00:14:26.057 回答
0

你能给这个链接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 的现成链接,请尝试在管理面板中的视图(微型站点)上创建链接并使用此链接。

于 2013-03-04T07:57:20.560 回答