サイト コレクションがあります。これを行うには再帰ループが必要だと言われました。
これは私が試したことです:
サイトが読み込まれたら、 getSiteTree() を呼び出して、最上位の Web サイトを getSubSite() 関数に渡します。そこから、サブサイトがあるかどうかを確認します。私はブール値を持っていますが、まだ実際には使用していません。このタイプの作業で以前に使用されているのを見たことがあります。とにかく、そこからサブサイトがあるかどうかを確認し、そうでない場合はブランチの終わりをログに記録し、ある場合は新しい URL を使用して関数を再度呼び出し、プロセスを繰り返します。コンソールを見ると、意図したとおりに動作しているようです。
function getSiteTree(){
var tree = $('#treeviewList');
var rootsite = window.location.protocol + "//" + window.location.hostname;
var siteEnd = false;
getSubSite(rootsite);
}
function getSubSite(url){
$().SPServices({
operation: "GetWebCollection",
webURL: url,
async: true,
completefunc: function(xData, Status) {
var siteUrl;
var siteCount = $(xData.responseXML).find("Web").length;
if(siteCount == 0){
console.log("end of branch");
siteEnd = true;
}else{
$(xData.responseXML).find("Web").each(function() {
siteUrl = $(this).attr("Url");
console.log(siteUrl);
getSubSite(siteUrl);
});
}
}
});
}
私の質問: サイトができたので、それらのサイトを取得してこのようなものを作成する必要がありますが、これを達成する方法がわかりません。
<li>Site 1
<ul>
<li>sub 1.1</li>
<li>sub 1.2</li>
<li>sub 1.3</li>
<ul>
<li>1.3.1</li>
</ul>
<li>sub 1.4</li>
<li>sub 1.5</li>
</ul>
</li>
<li>Site 2
<ul>
<li>sub 2.1</li>
<li>sub 2.2</li>
<li>sub 2.3</li>
<ul>
<li>2.3.1</li>
<li>2.3.2</li>
</ul>
</ul>
</li>
</ul>
私はこの初期htmlを持っています:
<div id="treeviewDiv" style="width:200px;height:150px;overflow:scroll">
<ui id="treeviewList"></ui>
</div>
これは私が得ることができる出力であり、私が達成しようとしていることです。うまくいけば、これで少し問題が解決することを願っていますhttp://i.imgur.com/D5eHeHe.png :