2010-12-07 60 views
0

更新一天后:现在正在设置Cookie。我试图通过下面引用的代码中的编辑来显示我需要做的更改。还有一个问题。现在它不应用非默认样式表!该浏览器可以找到他们,而不是切换....php styleswitcher饼干没有在wordpress中设置。为什么?

(原题:) 我使用罗布·巴卢的第2节Styleswitcher(robballou.com/switcher/v2/tutorial.php),在一个WP3博客(网站是here)。我已经改变了样式表的URL,让WP知道在哪里可以找到他们:

来自:
$ss->addStyle("default", "style.css", "", "", true);

$my_url = get_bloginfo('template_url'); 

$ss->addStyle("default", $my_url . '/style.css', "", "", true); 

由源文件中的情况来看,被发现的样式表。所以这不是问题。但是,Cookie只是没有设置。如果我在网页上运行完全相同的脚本(例如molvray.com/testing/ss-example.php),它将起作用,并且当我检查cookie时,cwStyle已设置。但只要它在WP中,就没有运气。

我猜这个问题是这条线:$ss->cookieDomain = ".". $_SERVER['HTTP_HOST'];在switcher.php。我看到一则提示使用HTTP_REFERRER的帖子,但这没有帮助。我已经在下面包含了switcher.php。我没有碰过Styleswitcher.php本身。

谁能告诉我我做错了什么?我要疯了!

请尽量保持沉默,以便我可以跟随雪球。我在编程时毫无用处。

新增功能:switcher.php的大部分内容都包含在header.php中,而不是单独的文件。

在header.php中:

<?php 

require_once( “Styleswitcher.php”);
$ ss = new Styleswitcher('/ switcher/v2 /');

if(!isset($reqPath)){ $reqPath = ""; } 
require_once($reqPath ."Styleswitcher.php"); 
$my_url = get_bloginfo('template_url'); 
$ss = new Styleswitcher(); 

$ss->addStyle("default", $my_url . '/style.css', "", "", true); 
$ss->addStyle("lowgraphics", $my_url . '/handheld.css'); 
$ss->addStyle("highcontrast", $my_url . '/highcontrast.css'); 

$ss->createSet("style"); 
$ss->addStyleToSet("style", "default", true); 
$ss->addStyleToSet("style", "lowgraphics"); 
$ss->addStyleToSet("style", "highcontrast"); 

$ss->cookieDomain = ".". $_SERVER['HTTP_HOST']; 
$ss->cookieName = "cwStyle"; 

$ SS->开始();

$ss->printStyles(); 
    ?> 

实际switcher.php然后只是:?如在WordPress的的header.php使用

<?php 
if(!isset($reqPath)){ $reqPath = $my_url; } 
require_once("Styleswitcher.php"); 
$ss = new Styleswitcher('/switcher/v2/'); 
$ss->cookieDomain = ".". $_SERVER['HTTP_HOST']; 
$ss->cookieName = "cwStyle"; 
$ss->start(); 
?> 

形式具有“< _ PHP代码bloginfo( 'template_url');>/switcher.php”,而不是仅仅 “switcher.php”

<form action="<?php bloginfo('template_url'); ?>/switcher.php" method="post"> 

< _Input类型= “隐藏” 名称= “引荐” ID = “引荐” 值= “”/>

<input type="hidden" name="inputStyle2" id="inputStyle2" value="style" />   
    <li><input type="submit" name="style" id="default" value="Default" <?php $ss->printSetInputChecked("style", "default"); ?>/></li>  
    <li><input type="submit" name="style" id="lowgraphics" value="Mobile" <?php $ss->printSetInputChecked("style", "lowgraphics"); ?>/></li> 
    <li><input type="submit" name="style" id="highcontrast" value="High&nbsp;Contrast" <?php $ss->printSetInputChecked("style", "highcontrast"); ?>/> </li> 
    </form> 

我认为,至关重要的一点是在表单元素中添加了php bloginfo('template_url')路径到switcher.php。现在来弄清楚为什么它不会去除默认样式。

+0

你在哪里运行代码的主要块?在模板文件里面?如果是这样的文件?在插件里面? – TheDeadMedic 2010-12-08 11:05:42

+0

主要代码在Styleswitcher.php中,与下载相同。 switcher.php调用它,并包含您可能需要更改的设置。两者都在模板文件的博客目录中。我在switcher.php中更改的是“myurl”行和样式文件的路径。 – quixote 2010-12-08 16:47:47

回答

0

(继续响应死者军医。我没有系统的窍门在这里呢。)

我也一直在四处寻找多一些,并且发现了一些有关与WP注册全球问题变量。 http://wordpress.org/support/topic/wp-blog-headerphp-killing-sessions

我试着在博客根目录下创建一个php.ini文件,并在该线程末尾建议使用“register_globals Off”,但似乎没有任何操作。

还有这个链接,hp://www.scratch99.com/2008/09/setting-cookies-in-wordpress-trap-for-beginners/它谈论给setcookie一个明确的路径,但我不清楚如何以及在哪里适合上面我的switcher.php。

(要回答你的最后一个问题:不,这不是一个插件,WP是styleswitchers可怜,因此这奥德赛:S)