Api Tumblr主题开发:用于Photoset帖子的Square-75px照片
我正在尝试使用Tumblr的主题API,并且刚刚发现了这一点 变量Api Tumblr主题开发:用于Photoset帖子的Square-75px照片,api,templates,themes,tumblr,Api,Templates,Themes,Tumblr,我正在尝试使用Tumblr的主题API,并且刚刚发现了这一点 变量{PhotoURL-75sq}(应该在块中:Photos不会返回值。 它适用于单张照片,但不适用于照片集 另外,图片本身似乎已经生成,但API没有生成 返回正确的值,例如: (来源:) 上面的图像是使用tumblr控制面板上传到photoset post中的,正如您所见,只需将文件名250px图像的末尾替换为75sq,它就会正确显示(这意味着它确实是生成的) 但是当使用`{PhotoURL-75sq}时,它不会返回它的值 {
{PhotoURL-75sq}
(应该在块中:Photos
不会返回值。
它适用于单张照片,但不适用于照片集
另外,图片本身似乎已经生成,但API没有生成
返回正确的值,例如:
(来源:) 上面的图像是使用tumblr控制面板上传到photoset post中的,正如您所见,只需将文件名250px图像的末尾替换为
75sq
,它就会正确显示(这意味着它确实是生成的)
但是当使用`{PhotoURL-75sq}时,它不会返回它的值
{block:Photoset}
<h1>{TimeAgo}</h1>
<div class='slideshow'>
{block:Photos}
<img src='{PhotoURL-75sq}' alt>
{/block:Photos}
</div>
{/block:Photoset}
{block:Photoset}
{TimeAgo}
{块:照片}
{/block:Photos}
{/block:Photoset}
我不确定这是不是一个合适的地方,但因为他们的支持拒绝帮助我说:
遗憾的是,我们无法为HTML自定义提供技术支持。鉴于我们的用户数量众多,我们只是没有资源。我们深表歉意。如果您想了解更多有关HTML和CSS的信息
在这种情况下,我认为这是一个bug,或者他们只是在Photoset中重命名了这个变量,而不让开发人员知道
提前感谢在您的脑海中添加以下内容:
<script type="text/javascript">
function resizePhotosets(desiredSize)
{
var setFrames = document.getElementsByClassName("photoset");
if (setFrames != null)
{
for(var i = 0; i < setFrames.length; i++)
{
var foundWindow = false;
var frameWindow = null;
while(!foundWindow)
{
frameWindow = setFrames[i].contentWindow;
if (frameWindow != null)
foundWindow = true;
}
var foundDoc = false;
var frameDoc = null;
while(!foundDoc)
{
frameDoc = frameWindow.document;
if (frameDoc != null)
foundDoc = true;
}
if (foundDoc)
{
var photoRows = frameDoc.body.getElementsByClassName("photoset_row");
for (var j = 0; j < photoRows.length; j++)
{
photoRows[j].removeAttribute("style");
photoRows[j].style.display = "inline";
var photos = photoRows[j].getElementsByTagName("img");
for(var k = 0; k < photos.length; k++)
{
photos[k].style.width = desiredSize.substring(0, desiredSize.lastIndexOf('sq')) + 'px';
var source = photos[k].src;
var pos1 = source.lastIndexOf('_');
var pos2 = source.lastIndexOf('.');
photos[k].src = source.substring(0, pos1 + 1) + desiredSize + source.substring(pos2);
}
}
}
}
}
return false;
}
</script>
所有这一切都是为了获取提供的URL,并将其替换为75px的方形URL。我有点担心浏览器不必要地加载250px的图像,所以我做的有点不同。当然,我对javascript几乎一无所知,所以,fwiw: 头部或身体的某处(不会重复):
var img_75sq=函数(imgTag,urlFor250px)
{
var urlFor75px=urlFor250px.replace(“'u 250.jpg','u 75sq.jpg');
var newImgTag=imgTag.replace('SRC','SRC=“”+urlFor75px+”);
文件编写(newImgTag);
}
然后:
{block:Photoset}
{block:Photos}
<script type="text/javascript">
img_75sq('<img id="..." style="..." SRC>', '{PhotoURL-250}');
</script>
{/block:Photos}
{/block:Photoset}
{block:Photoset}
{块:照片}
img_75sq(“,{PhotoURL-250}”);
{/block:Photos}
{/block:Photoset}
这样,浏览器就不会看到250px的img标记。这种简单性也适合我的DOM/JS新手技能。:)首先,这对于photoset来说是不正确的语法<代码>{block:Photoset}{Photoset-500}{/block:Photoset}是您想要的,您可以在Photoset周围和下方添加更多代码以获取信息、注释等。但这是您的起点。iframe将与内部的photoset照片一起渲染。您必须使用Javascript来更改iframe的内容。我可以给你举个例子,但要等到下课后再说。效应器主题这样做是为了为Photoset创建其高分辨率幻灯片。嗨,我恐怕不行,在Photoset中,您可以有另一个名为
照片的块
,它将分别返回每个图像,以防您不想使用默认的Photoset小部件。它在上面提到的链接上的文档中,我已经在使用它了,唯一的问题是75px的方形照片。那么{PhotoURL-250}
或{PhotoURL-500}
工作了吗?我从你的帖子中得到的印象是这些都不起作用。在这种情况下,您仍然可以使用我提供的代码进行一些修改。无论如何,您必须使用Javascript来处理URL以获得方形URL,因为文档中没有提供它。祝你好运。太好了,谢谢你,艾丽,我同意现在使用它可能是更好的方法。我只是很失望,因为这显然是主题API上的一个bug,他们拒绝听取开发人员的意见:/而且似乎{PhotoURL-100}不起作用..但是其他的工作很好..无论如何,非常感谢您详细的回复。我不知道tumblr更新了多少他们的东西,但是现在每个文件都可能位于不同的子域上-36.media.tumblr、41.media.tumblr等等,因此只有在幸运的情况下,并且75sq存储在同一子域上,这才有效。虽然照片中75平方米的主题代码到今天还不起作用。。。
<script type="text/javascript">
var img_75sq = function(imgTag, urlFor250px)
{
var urlFor75px = urlFor250px.replace('_250.jpg', '_75sq.jpg');
var newImgTag = imgTag.replace('SRC', 'src="' + urlFor75px + '"');
document.write(newImgTag);
}
</script>
{block:Photoset}
{block:Photos}
<script type="text/javascript">
img_75sq('<img id="..." style="..." SRC>', '{PhotoURL-250}');
</script>
{/block:Photos}
{/block:Photoset}