2 Scripts combineren?

  • Onderwerp starter Onderwerp starter Mvnl
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
't Gaat hier om de like-button he? Ik heb zeker een facebook-account nodig om die functionaliteit te testen? :p

Ja, dat vrees ik idd wel..


Hier werkt 't gewoon. Je bedoelt toch die mixcloud-player onderin de rechterkolom?
Die inderdaad, maar na het terugzetten van de individuele script linkjes deed ie t idd weer!

Wat zijn {hastags}? :P Maar dat moet wel te regelen zijn binnen het script. Wat wil je hebben in plaats daarvan? (Een error / niets / "Geen suggesties gevonden" / ...)

Hastags is om aan te geven dat de functie alleen moet worden uitgevoerd wanneer de post tags heeft. Maar er zijn dus ook gevallen van 'wel tags, geen resultaten'.
Het liefst heb ik in dat geval gewoon dat ie niets laat zien (dus ook geen regel met 'de resultaten zijn:').

Qua javascript kan de efficiëntie een stuk hoger volgens mij. De jQuery-library (die best groot is) wordt voor iedere post een keer geladen (zie een eerdere post van mij ;)), en ook het related-script zelf bevat dingen die dubbelop zijn als je ze meerdere keren plaatst.
Maar goed, dat is het ergste niet :P Voor iedere (post, tag)-combinatie wordt er een request gedaan naar een andere pagina. Zo'n request kost relatief veel tijd, en daar zit inderdaad een limiet op (115 milliseconden zo te zien). Is een request niet afgerond voor die tijd, dan heb je geen resultaten voor die tag.
Ik denk dat het zou lonen als er een manier gevonden wordt om dit efficienter te doen. De resultaten van een request voor een tag #Singles zou bijvoorbeeld voor meerdere posts gebruikt kunnen worden. Als ik nu je homepage laadt zie ik 89 (!) van die requests de deur uit gaan. Dat merk je gewoon in de laadtijd ;)

Wat betreft het niet laden gister: vlak daarna was heel Tumblr down, en aangezien ik het aangepaste script daar heb geupload verklaart dat wel wat ;)
Wat betreft het plaatsen van het script op een ander plek.. vlak voor de [/block:posts] zou werken, alleen staat ie dan niet meer in het roze kader (of ik zou het hele blok moeten verhuizen).
Al met al vind ik het niet zo heel storend als het laden van resultaten even duurt, dat gebeurt gelukkig wanneer de rest van de pagina al zichtbaar is!
 
Ik heb het gevoel dat we niet helemaal op één lijn zitten :P Ik had het over het jQuery block. De rest van het script blijft inderdaad staan om te kunnen werken ;)

Als je het goed is heb je nu zo'n opbouw:
HTML:
<html>
    <head>
        <title>{Title}</title>
    </head>
    <body>
        <ol id="posts">
            {block:Posts}
                ...
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript">
                <script type="text/javascript" src="http://static.tumblr.com/ogrv0c6/oy9ln578c/tumblr-in-link.1.0.js?homepage=true&num=5&len=60&title=You might also like this:&tags=...">
                ...
            {/block:Posts}
        </ol>
    </body>
</html>

Mijn theorie was dat deze laadtijd zou schelen:
HTML:
<html>
    <head>
        <title>{Title}</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
        <ol id="posts">
            {block:Posts}
                ...
                <script type="text/javascript" src="http://static.tumblr.com/ogrv0c6/oy9ln578c/tumblr-in-link.1.0.js?homepage=true&num=5&len=60&title=You might also like this:&tags=..."></script>
                ...
            {/block:Posts}
        </ol>
    </body>
</html>
...of is dat nu precies wat je geprobeerd had? :p

Iig, wat betreft de wel tags, geen related posts issue:
Deze geeft niets weer als er geen related posts gevonden zijn (als het goed is :))
[JS](function() {

var $j = jQuery.noConflict();
window.N = window.N == undefined ? 0 : window.N + 1;
var postInfos = $j(".postinfo");

var config = {
url: "popsessed.tumblr.com",
n: window.N,
postUrl: postInfos[postInfos.length - 1].getElementsByTagName("a")[0].href
};
var titles = [];
var links = [];
var images = [];
var types = [];

var scripts = document.getElementsByTagName('script');
var this_script = scripts[scripts.length - 1];
var params = this_script.src.replace(/^[^\?]+\??/,'').split('&');

var url_base = ((typeof(config.url) == 'undefined') ? ('http://' + document.domain + '/') : ('http://' + config.url + '/'));

for(var i=0; i<params.length; i++) {
var tmp = params.split("=");
config[tmp[0]] = unescape(tmp[1]);
}

if(typeof(config.tags)=='undefined'){
error(0);
return;
}
if(typeof(config.num)=='undefined'){
config.num=8;
}
if(typeof(config.len)=='undefined'){
config.len=60;
}
if(typeof(config.title)=='undefined'){
config.title='Related Posts:';
}
if(typeof(config.type)=='undefined'){
config.type='';
}

switch(config.css) {
case ('simple'):
document.write('<link rel="stylesheet" type="text/css" ' +
'href="http://tumblr-in-link.googlecode.com/svn/trunk/css/simple.css" media="screen" />');
break;
case ('complete'):
document.write('<link rel="stylesheet" type="text/css" ' +
'href="http://tumblr-in-link.googlecode.com/svn/trunk/css/complete.css" media="screen" />');
break;
case ('light'):
document.write('<link rel="stylesheet" type="text/css" ' +
'href="http://tumblr-in-link.googlecode.com/svn/trunk/css/light.css" media="screen" />');
break;
case ('dark'):
document.write('<link rel="stylesheet" type="text/css" ' +
'href="http://tumblr-in-link.googlecode.com/svn/trunk/css/dark.css" media="screen" />');
break;
}

document.write(
'<div id="tumblrinlink' + window.N + '">' +
'<div id="inlink-loading' + window.N + '">Loading Tumblr In Links...</div>' +
'<div id="inlink-title' + window.N + '"></div>'+
'<ul id="inlink-list' + window.N + '"></ul>' +
'</div>'
);

var tags = config.tags.slice(0,-1).split(',');

$j(document).ready(function() {
function getRelated() {
for(var i=0; i<tags.length; i++){
$j.getJSON(url_base+'api/read/json?callback=?&filter=text&num=' + config.num + '&start=0&type=' + config.type + '&tagged=' + escape(tags), function(data) {
$j(data.posts).each(function(i, post) {
var text = '';
if (post.type=='regular') text += post['regular-title'];
else if (post.type=='link') text += post['link-text'];
else if (post.type=='quote') text += post['quote-text'];
else if (post.type=='photo') text += post['photo-caption'];
else if (post.type=='conversation') text += post['conversation-title'];
else if (post.type=='video') text += post['video-caption'];
else if (post.type=='audio') text += post['audio-caption'];
else if (post.type=='answer') text += post['question'];
if(text.length>config.len){
text=text.slice(0,config.len);
text+='...';
}
var image ='';
if(post.type=='photo') image+=post['photo-url-100'];
else if(post.type=='link') image+=['link-text'];
else if(post.type=='quote') image+=['quote-text'];
else if(post.type=='photo') image+=['photo-caption'];
else if(post.type=='conversation') image+=['conversation-title'];
else if(post.type=='video') image+=['video-caption'];
else if(post.type=='audio') image+=['audio-caption'];
else if(post.type=='answer') image+=['question'];
titles.push(text);
links.push(post['url-with-slug']);
images.push(image);
types.push(post['type'])
});

}).complete(getList);
}

}
function getList(){
var added = 0;
for (var i = 0; i < titles.length; i++) {
var regex = new RegExp('('+links+')');
var html = $j("#inlink-list" + config.n).html();

if(links != config.postUrl && !html.match(regex)){
if(config.num--<=0) return;
added++;

var item='<li class="inlink-item" id="'+types+'"><a class="inlink-link" href="'+links+'" title="'+titles+'"><img src="'+images+'" alt="'+titles+'"><p>'+titles+'</p></a></li>';
$j("#inlink-list" + config.n).append(item);
}
}
if (added > 0) {
$j("#inlink-title" + config.n).html('<h2>'+config.title+'</h2>');
}
$j("#inlink-loading" + config.n).html('');
}
getRelated();

});

function error(e){
var msg="error: ";
switch(e){
case 0:
msg+='no tags defined';
break;
case 1:
msg+='tumblr API problem';
break;
}
$j("#inlink-loading").html(msg);
}
})();[/JS]
 
Super, bedankt!
Dat verplaatsen van de Jquery had ik eergister gedaan maar toen werkte de player niet meer. Wellicht zat er ergens een foutje in dus ik zal het straks nog eens testen!
 
Het is niet java gerelateerd, maar aangezien jij inmiddels het script binnenstebuiten kent, heb jij een idee waarom de links wel een streep hebben als je ze aanklikt in IE maar niet in FF?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan