Api Tumblr主题开发:用于Photoset帖子的Square-75px照片

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}时,它不会返回它的值 {

我正在尝试使用Tumblr的主题API,并且刚刚发现了这一点 变量
{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}