2011-11-06 222 views
0

我使用Joomla 1.5开发了一个为游戏公司开发的网站。部分网站由他们开发的游戏角色发生器组成。问题是用户希望能够打印字符表,而不需要Joomla模板包围它。

至于具体情况,我安装了directphp扩展,整个生成器是用PHP编写的(用一些JavaScript处理PHP不能处理的东西)。由于生成器跨越数十页的调用,因此将所有内容存储在$ _SESSION中是有意义的。所有这些都能正常工作。为了让最终的表格打印机更加友好,我尝试将用户重定向到Joomla之外的页面(尽管在同一台服务器上,甚至在同一个文件夹中),但我无法从这个新页面访问$ _SESSION数据。

我已经看到几个帖子(在这个网站上的一些),指向加载Joomla框架和访问它,我已经尝试,但我正在寻找的数据似乎并没有包含在那里。有没有人遇到过这个问题,或知道如何获得这些数据?

+0

你在非Joomla脚本的顶部有'session_start()'吗? –

+0

我这样做。我也确认,通过检查两个脚本,session_id()值是不同的,并且我已经尝试在非Joomla脚本上设置id以匹配Joomla脚本无济于事。 – ShenDraeg

+0

而当你'print_r($ _ SESSION)',你什么也得不到? Joomla是否有自己的自定义SESSION处理(可能在数据库中)? –

回答

1

你正在使这种方式比它需要更难。你不必编写任何额外的代码来完成你想要做的事情。为了打印我们没有Joomla模板的组件输出,您只需将?tmpl=component添加到您的URL中,并且Joomla将仅显示到没有任何模板的组件输出。如果您想给它一个自定义样式表或任何特殊的样式表,您还可以通过在模板文件夹中添加一个名为component.php的文件来添加模板覆盖。

为了控制每页的CSS,您可以在菜单项中添加Page Class Suffixes。然后将此代码添加到index.php,以便您可以使用它们。

某处在头部添加此:

$menu = &JSite::getMenu(); 
$active = $menu->getActive(); 
$pageclass = ""; 
if (is_object($active)) : 
    $params = new JParameter($active->params); 
    $pageclass = trim($params->get('pageclass_sfx')); 
endif; 

与此更换你的身体标记:

<body id="<?php echo $pageclass ? $pageclass : 'default'; ?>"> 

,你不特定的Page类后缀的页面将使用default因为身体ID,你所做的任何事情都将使用你指定的内容。

+0

哈!这不是我第一次做出比过去更复杂的方式,而且肯定不会是最后一次。非常感谢您的帮助! – ShenDraeg

+0

其他人为此网站创建了模板,并使用Artisteer来完成此操作。已经有一个component.php文件,并且该网站的CSS中的某些内容正在搞砸这些表格。我不假设有一种方法可以让页面的这部分忽略继承的CSS吗? – ShenDraeg

+0

您可以通过在参数(系统)选项下的菜单项中添加页面类后缀来控制每页的CSS。您可能需要向模板添加一些代码,以便将后缀添加到body标签,然后您可以对页面执行任何操作,只需使用该选择器来指定CSS即可。我会将代码添加到答案中。 –