【问题标题】:change tumblr layout theme with script使用脚本更改 tumblr 布局主题
【发布时间】:2014-07-11 18:59:43
【问题描述】:

我想在我的 tumblr 博客中添加不同的主题设计。如果我点击标签,设计应该会改变。例如,如果我单击背景标签“食物”,侧边栏图像和字体应更改为与食物相关的主题。因为如果我尝试更改标签站点本身(tumblr 不允许我用新页面覆盖这一面),我将无处可去,我开始寻找是否可以使用脚本函数解决这个问题。我找到了一个与我搜索的代码接近的代码并且它有效(我只需要更改背景思想,因为我找不到用它来更改侧边栏图像的方法)。使用此代码,我安装了一个按钮,该按钮应更改主题并将您发送到合适的标签站点。现在的问题是,在我到达正确的站点之前,站点的更改就适用了。

例如:我在我的主页上,如果我现在点击标签“食物”的按钮,主页的设计会发生变化,之后标签网站将加载并且样式再次恢复正常。它应该被切换。首先加载正确的站点,然后更改设计。只要您浏览与标签相关的页面,它就应该保留设计,如果您离开页面,它应该会变回来。有人知道如何解决这个问题吗?

这是我找到的代码:

<script language="JavaScript">
<!--
function changeBGC(color){
document.body.style.backgroundColor = color;

}
//-->
</script>




<a href="tagged/food" onClick="javascript:changeBGC('#000099')">Click Blue</a>

反馈后更新 16.07.14:

这是我博客中代码的结尾(我没有触及其余代码):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> {block:IfSoundCloudLinkForPlayer} <script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script> <script src="http://static.tumblr.com/j8hz7jr/nqTn1t8gg/stratus.js"></script> {/block:IfSoundCloudLinkForPlayer} <script src="http://static.tumblr.com/79xqv9n/d4nn7c5ja/theme.min.js"></script> <script>$('#loading').hide();</script> {block:IfGoogleAnalyticsID} <script>
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', '{text:Google Analytics ID}']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script> {/block:IfGoogleAnalyticsID} <!--OO.TS.--> 

     <script type="text/javascript">

  var _href             = document.location.href;       
  var _primaryDir       = document.location.pathname.split("/")[1];
  var _secondaryDir     = document.location.pathname.split("/")[2];

  if (_secondaryDir == 'test'){
     $('body').css('background-color','#C0C0C0')
  }
  if (_secondaryDir == 'test'){
     $('body').css('masthead-background','http://www.rexwallpapers.com/images/wallpapers/landscape/sunshine/sunshine_5.jpg')
  }else{
     $('body').css('masthead-bg','#08298A') 
  }
</script>                           
    </body> </html>

我之前一直在搞乱不同的参数,但这就是现在的样子。刊头背景只是我在互联网上找到的一张随机图片。我尝试了不同的链接,但没有一个有效,所以我想我的个人照片不会同样有效。就像我已经说过的,唯一有效的是改变背景颜色。

【问题讨论】:

  • javascript 不维护页面之间的状态,您必须将状态数据存储在 cookie 或 localStorage 中
  • 听起来很难。我不是编程专家,只知道学校的基础知识。 cookie 和 localStorage 肯定不属于那个。我想在我把事情搞砸之前,我应该把手放开。但是感谢您的重播。 ;)
  • 而不是将其附加到将指向另一个页面的按钮上,您可以捕获当前页面的 url 参数,然后在找到某些匹配项时设置一些 css,如果未找到匹配项则使用默认值,但这不是动态的,您需要提前知道标签。我已经使用 jquery 完成了这项工作。如果这有用,请告诉我,我可以提供更多帮助。
  • 是的,这正是我最初一直在寻找的。带有脚本的按钮是一个“计划 b”的想法,因为我不知道如何用简单的 css 来改变它。我已经想过自己捕获 url 参数,但我不知道如何做到这一点。我可以看看你一直在使用的代码吗?

标签: javascript layout tags tumblr


【解决方案1】:

好的,根据您评论中的反馈,这是我在自己(和其他)tumblrs 上使用的系统。

首先确保您的主题中有指向 jquery 的链接,许多主题都有,但如果您的主题没有将其添加到文档的开头。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

现在我们可以编写一些脚本来捕获 url 参数。

<script type="text/javascript">

  var _href             = document.location.href;       
  var _primaryDir       = document.location.pathname.split("/")[1];
  var _secondaryDir     = document.location.pathname.split("/")[2];

  if (_secondaryDir == 'food'){
     $('body').css('background-image','path/yourimage.png')
  }else{
     $('body').css('background-image','path/fallbackimage.png') 
  }

</script>

这将检查二级目录 some.tumblr.com/tagged/food

如果它与食物相匹配,那么背景应该会改变。

然后您可以编写一个 else if 语句并添加更多参数。

希望这是足够的信息,如果您需要更多信息,请告诉我。

【讨论】:

  • 好东西,虽然我也会提到'传统' URL 参数语法?cat=food&amp;tag= 等。
  • 在 tumblr 上没见过,用过吗?
  • 不一定在 Tumblr 上,但在其他任何地方;这是一个相当深入的article 关于 URL 查询字符串参数
  • 很奇怪。它只是部分工作。似乎我唯一可以改变的是背景颜色。其他参数不起作用。我无法添加图像或更改其他元素的颜色。我已经检查了 jquery 并尝试了不同的主题,但没有任何效果。我一定做错了什么,但我不知道是什么。
  • 您需要添加更多代码,或者显示指向 tumblr 的链接。还有其他方法可以解决这个问题。即编写包含所有背景图像信息的不同类,然后根据页面更改body标签上的类名。链接可能是最快的事情,但我也会发布代码以显示您尝试过的内容。您可能需要为图像编写一个绝对网址。
【解决方案2】:

好的,所以这个页面正在运行:

http://layouttestblog2.tumblr.com/tagged/test

当变量匹配测试时,它会改变背景颜色。

var _href             = document.location.href;       
var _primaryDir       = document.location.pathname.split("/")[1];
var _secondaryDir     = document.location.pathname.split("/")[2];

if (_secondaryDir == 'test'){
   $('body').css('background-color','#C0C0C0')
}
if (_secondaryDir == 'test'){
   $('body').css('masthead-background','http://www.rexwallpapers.com/images/wallpapers/landscape/sunshine/sunshine_5.jpg')
}else{
   $('body').css('masthead-bg','#08298A') 
}

所以第一个 if 语句有效,因为 background-color 是一个 css 属性。 masthead-background 和 masthead-bg 不是 CSS 属性。

如果你尝试

 if (_secondaryDir == 'test'){
   $('body').css('background-image','http://www.rexwallpapers.com/images/wallpapers/landscape/sunshine/sunshine_5.jpg')
}

应该可以的

(不用担心测试 tumblr 帐户,我有大约 8 个用于测试)。

编辑

我的 css 语法有误。

应该是这样的:

body {
   background-image:url("imagefile.png");
}

或(简写)

body {
   background:url("imagefile.png") 0 0 no-repeat;
}

所以 jquery 应该是这样的:

 if (_secondaryDir == 'bespoke'){
    $('body').css('background','url("http://www.rexwallpapers.com/images/wallpapers/landscape/sunshine/sunshine_5.jpg")')
}else if (_secondaryDir == "tailoring") {
    $('body').css('background','url("http://upload.wikimedia.org/wikipedia/commons/d/d7/Sad-pug.jpg")') 
}else if (_secondaryDir == "wedding") {
    $('body').css('background','url("http://www.vam.ac.uk/users/sites/default/files/album_images/56177-large.jpg")') 
}else if (_secondaryDir == "suits") {
    $('body').css('background','url("http://www.roopevintage.com/blog/wp-content/uploads/2010/11/NHS-524-Tortoise.jpg")') 
}else {
    $('body').css('background-image','url("http://irishmarxism.files.wordpress.com/2012/06/default1.jpg")')
}

如果其他条件都不匹配,则最后的 else 语句使用默认图像,因此这应该适用于任何其他页面。

为混淆道歉。

你可以在这里看到这个工作:http://madox-test.tumblr.com/ 检查左侧的页面链接。

【讨论】:

  • 让我们看看……我想我现在很困惑。所以我不能改变不是 CSS 属性的东西。明白了,但菜单和帖子等其他内容不应该也是 CSS 的一部分吗?我是否需要另一个代码(或者我只是得到了错误的参数名称)?至于您发布的代码,我很抱歉,但它不起作用。我之前已经测试过了。但是我复制了代码以防万一,但它仍然不起作用。似乎它被忽略了或其他什么。 ;(
  • 好的,这部分是我的错,我的语法有点错误。我将简短地编辑这个答案,并发送一个链接到一个可以正常工作的 tumblr。
  • 万岁!我让它工作了:D!甚至认为这花了我一些时间。您发布的代码不起作用,所以我查看了您的链接,并注意到该博客的脚本多了两行。我用附加的行“ $(document).ready(function(){ ”和“ console.log(_href, _primaryDir, _secondaryDir); }); ”复制了整个内容,现在它完美地工作了。我什至让它与不同的刊头一起工作。我真的很高兴它成功了。真的非常非常感谢。如果没有你的帮助,我认为我不会让它工作。 ;)
  • P.S.似乎只支持“一个单词”标签。如果标签由两个或多个单词组成,则它不起作用。这没什么大不了的,但我认为值得一提。
  • 我认为你可以做 bob+smith 但这仍然是一个标签,不确定连接两个标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2016-09-25
  • 2014-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多