首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模板index.php中的Joomla $app-> redirect ()导致重定向循环

模板index.php中的Joomla $app-> redirect ()导致重定向循环
EN

Stack Overflow用户
提问于 2013-06-24 02:36:39
回答 1查看 9.5K关注 0票数 1

我试图在我正在构建的模板index.php中重定向,并获得一个重定向循环。我是不是遗漏了什么?我试图做的是根据入口URL和某些模板样式重定向默认页面。我的模板代码看起来像这样...

config.php

代码语言:javascript
复制
<?php
//joomla configuration
JLoader::import('joomla.filesystem.file');
JHtml::_('behavior.framework', true);
JHtml::_('jquery.framework');
$app = JFactory::getApplication();
$config = JFactory::getConfig();
$doc = JFactory::getDocument();

//load template style sheets and scripts
$doc->addStyleSheet($this->baseurl.'/media/jui/css/bootstrap.min.css');
$doc->addStyleSheet($this->baseurl.'/media/jui/css/bootstrap-responsive.min.css');
$doc->addStyleSheet('templates/' . $this->template . '/css/template.css');
$doc->addScript('templates/' . $this->template . '/javascript/template.js');

//sidebar configuration - determines the span classes for the sidebar and main component area
$component = $this->params->get('component-span');
if(!$this->countModules('sidebar')):
    $component = 12;
endif;
$sidebar = 12 - $component;
$sidebar_pos = $this->params->get('sidebar-pos');

//navbar inverse
if($this->params->get('navbar-inverse') == 'TRUE'):
    $inverse = ' navbar-inverse';
endif;

//multisite configuration - determines which template params and menu module to display depending on the base URL
$domain = $_SERVER["SERVER_NAME"];
$primary = $this->params->get('site-domain');
$sub1= $this->params->get('domain1-domain');
$sub2= $this->params->get('domain2-domain');
$sub3= $this->params->get('domain3-domain');
$sub4= $this->params->get('domain4-domain');
$sub5= $this->params->get('domain5-domain');
$menuid = $app->getMenu(); 

if($domain == $primary):
    $logo = $this->params->get('logo');
    $title = $this->params->get('site-title');
    $slogan = $this->params->get('site-slogan');
    $menu = '<jdoc:include type="modules" name="menu" />';
elseif($domain == $sub1):
    $logo = $this->params->get('domain1-logo');
    $title = $this->params->get('domain1-title');
    $slogan = $this->params->get('domain1-slogan');
    $menu = '<jdoc:include type="modules" name="menu-1" />';
    $menuitemid = $this->params->get('domain1-menuid');
    $menuitem = $menuid->getItem($menuitemid);
elseif($domain == $sub2):
    $logo = $this->params->get('domain2-logo');
    $title = $this->params->get('domain2-title');
    $slogan = $this->params->get('domain2-slogan');
    $menu = '<jdoc:include type="modules" name="menu-2" />';
    $itemid = $this->params->get('domain2-menuid');
elseif($domian == $sub3):
    $logo = $this->params->get('domain3-logo');
    $title = $this->params->get('domain3-title');
    $slogan = $this->params->get('domain3-slogan');
    $menu = '<jdoc:include type="modules" name="menu-3" />';
    $itemid = $this->params->get('domain3-menuid');
elseif($domain == $sub4):
    $logo = $this->params->get('domain4-logo');
    $title = $this->params->get('domain4-title');
    $slogan = $this->params->get('domain4-slogan');
    $menu = '<jdoc:include type="modules" name="menu-4" />';
    $itemid = $this->params->get('domain4-menuid');
elseif($domain == $sub5):
    $logo = $this->params->get('domain5-logo');
    $title = $this->params->get('domain5-title');
    $slogan = $this->params->get('domain5-slogan');
    $menu = '<jdoc:include type="modules" name="menu-5" />';
    $itemid = $this->params->get('domain5-menuid');
endif;


?>

index.php

代码语言:javascript
复制
<?php
defined('_JEXEC') or die;
include($this->baseurl.'templates/'.$this->template.'/includes/config.php');
$default_page = new JURI($menuitem->link);
print($domain.'<br />'.$primary.'<br />'.$default_page);

if ($domain != $primary):
    $link  = $default_page;
    $msg   = 'Testing Redirect'; 
    $app->redirect($link, $msg);
endif;
?>

<!DOCTYPE html>
<html>
<head>
    <?php $this->setTitle($title.' - '.$this->getTitle()); ?>
    <jdoc:include type="head" />
</head>
EN

回答 1

Stack Overflow用户

发布于 2014-02-03 15:24:11

发生这种情况是因为$domain != $primary出现故障。你获得$domain的方式可能是原因的根源。

看看PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'], am I understanding the man pages correctly?,确保这不是问题所在。

此外,Joomla还提供了JUri包来帮助实现这一点。如果你正在使用Joomla,使用它是一个好主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17264008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档