我在自定义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)上创建链接并使用此链接。