2017-07-17 3 views
1

Ich schrieb einen Code für die Navigation von nächsten und früheren Posts, die unter dem gleichen Label sind.Navigieren von Weiter und Zurück Post By Label In Blogger

Mein Blog ist http://www.rawdevart.com/

Alle Beiträge in diesem Blog wird immer nur unter 1 Etikett sein. Der Blog ist für ein japanisches Comic (Manga) -Hosting gedacht, also werden die Kapitel unter dem 1 gemeinsamen Label stehen, welches der Titel des Comics der Kapitel ist.

Der Code ist:

<style> 
#button_block_container 
{ 
    text-align:center; 
} 
#next, #prev 
{ 
display: inline-block; 
} 
</style> 
<script type="text/javascript"> 
//<![CDATA[ 
var pT="<data:post.title/>"; 
function recentpostslist(json) { 
var eU=new Array(); 
var eT=new Array(); 
var current,k=0; 
    for (var i = 0; i < json.feed.entry.length; i++) 
    { 
    for (var j = 0; j < json.feed.entry[i].link.length; j++) { 
     if (json.feed.entry[i].link[j].rel == 'alternate') { 
     break; 
     } 
    } 
    eU[k] = "'" + json.feed.entry[i].link[j].href + "'";//bs 
    eT[k] = json.feed.entry[i].title.$t; 
    k++; 
    } 
    for(var i=0;i<k;i++) 
    { 
    if(eT[i]==pT) 
     current=i; 
    } 
    nb(current,eT,eU,k); 
} 
function nb(c,eT,eU,k) 
{ 
    var np=c-1; 
    var pp=c+1; 
    if(c!=0) 
    { 
    if(np!=0) 
    { 
     var next="<a href="+eU[np]+"><img src='https://1.bp.blogspot.com/-vbAhPUydPwA/WWuen8w2rsI/AAAAAAAAVP4/rutiJBBKz2kYTclTUKtq6W2vBm8pi6uaACLcBGAs/s1600/if_go-next_118773.png' alt='Next Chapter' title='Next Chapter' height='48' width='48'/></a>"; 
    document.getElementById("next").innerHTML=next; 
    } 
    if(pp!=k) 
    { 
     var prev="<a href="+eU[pp]+"><img src='https://2.bp.blogspot.com/-jHxFGDn9aj0/WWueoDAidyI/AAAAAAAAVP8/O_okyJkKiE0j621B2b6d6AmWGDL_7SczACLcBGAs/s1600/if_go-previous_118774.png' alt='Previous Chapter' title='Previous Chapter' height='48' width='48'/></a>"; 
     document.getElementById("prev").innerHTML=prev; 
    } 
} 
} 
//]]> 
</script> 
<b:loop values='data:post.labels' var='label'> 
    <script expr:src='&quot;feeds/posts/summary/-/&quot;+data:label.name+&quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/> 
</b:loop> 

Die Logik perfekt ist. Es funktioniert, wenn ich einen Titel einiger Kapitel in Variable setzen pT und ich verwende diese als Skript-Rückruf

<script src="http://www.rawdevart.com/feeds/posts/summary/-/**LABEL NAME**?max-results=150&alt=json-in-script&callback=recentpostslist"></script> 

Aber wenn ich es in Blogger-Vorlage habe ich benötigt expr:src zu verwenden, um es data:label.name zu machen zu akzeptieren.

Hier ist übrigens die Erklärung der Variablen, die ich verwendet habe.
eU ist ein Array, in dem alle URLs der Posts unter dem angegebenen Label gespeichert sind.
eT ist ein Array, in dem alle Titel der Posts unter dem angegebenen Label gespeichert sind.
pT wird verwendet, um den Namen des aktuell laufenden Kapitelnamens zu speichern.
I for Schleife bin mit:

for(var i=0;i<k;i++) 
    { 
    if(eT[i]==pT) 
     current=i; 
    } 
    nb(current,eT,eU,k); 

In hier findet er den Array-Index, wo die aktuelle Post befindet sich mit all dem dem Post-Titel verglich in eT Array mit aktuellem if(eT[i]==pT), speichert den Indexwert gefunden current und ich sende es an eine Funktion nb() mit dem aktuellen Index, und beide Arrays und zuletzt gespeicherten Array-Index k.

np speichert den Indexwert des nächsten Posts. Da die Posts in Recentpostlist Reihenfolge angeordnet sind, musste ich current-1 und Prev Post als current+1 tun.

if(np!=0) zum Finden, ob es keine weiteren Posts gibt und if(pp!=k) zum Finden, ob es keine früheren Posts gibt.

Jetzt für das Problem Teil: Wenn ich den Code in Blogger HTML-Vorlage eingeben und speichern Sie es und gehen Sie zu einem Post, es sind keine Inhalte von Post überhaupt angezeigt.
Nur Fußzeile und obere Kopfzeile lädt.

und fanden heraus, dass das Problem mit dem Callback-Skript ist:

<b:loop values='data:post.labels' var='label'> 
<script expr:src='&quot;feeds/posts/summary/-/&quot;+data:label.name+&quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/> 
</b:loop> 

Bitte helfen.

Antwort

1

Das Problem geschieht, weil es keinen Raum zwischen den Trennzeichen ist (+ und &quot;)

Der Code sollte stattdessen sein -

<b:loop values='data:post.labels' var='label'> 
<script expr:src='&quot;feeds/posts/summary/-/&quot; +data:label.name+ &quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/> 
</b:loop> 
Verwandte Themen