node as $node) { if(isset($node['type']) && $node['type'] == 'page' && $isExist === false) { $nTmpNodeList[] = $node->asXml(); $isExist = true; } elseif(isset($node['type']) && $node['type'] == 'folder') { _getTopicPath($node, $nTmpNodeList); } } } } } } $nTmpNodeList = array(); _getTopicPath($nMasterContentListXml, $nTmpNodeList); $nContentListXml = new SimpleXmlElement(''.implode('', $nTmpNodeList).''); } if(!empty($nContentListXml)){ if(!function_exists('_getListHtml_97a2e66d196bc3b12d3a4548c5670c39')){ function _getListHtml_97a2e66d196bc3b12d3a4548c5670c39($innerText, $nNodes, $contentEndLevel) { $blockHtml = ''; if(empty($contentEndLevel) || ($contentEndLevel < -1)) { $contentEndLevel = -1; } // 最後のフォルダ/ページのインデックスを取得 $lastIndex = count($nNodes->node) - 1; if($contentEndLevel >= 0 && (int)$nNodes['level'] > $contentEndLevel) { $lastIndex = 0; } // $startNode番から$endNode番までの node を取得 $_startNode = 0; if((int)$nNodes['level'] == 1) { $_startNode = 0; } // endNode=フォルダ、ページ、リンクページ $_endNode = $lastIndex; if((int)$nNodes['level'] == 1) { if(-1 >= 0 && -1 <= $lastIndex) { $_endNode = -1; } } // endPage=ページ、リンクページ $_endPage = $_startNode; for($i = $_startNode; $i <= $_endNode; $i++) { if(isset($nNodes->node[$i]['type']) && ($nNodes->node[$i]['type'] == 'page' || $nNodes->node[$i]['type'] == 'link_page') ) { $_endPage = $i; } } $innerPages = explode(' ', $nNodes['pages']); for($i = $_startNode; $i <= $_endPage; $i++) { if(isset($nNodes->node[$i]['type']) && ($nNodes->node[$i]['type'] == 'page' || $nNodes->node[$i]['type'] == 'link_page') ) { // 各フラグ設定 $isFirstNode = false; $isLastNode = false; $isIndexPageNode = false; if($contentEndLevel < 0 || (int)$nNodes['level'] <= $contentEndLevel) { if( !(isset($nNodes->node[$i]->close) && ($nNodes->node[$i]->close == 'close')) ) { if($i == $_startNode) { $isFirstNode = true; } if($i == $_endPage) { $isLastNode = true; } if($i == 0) { $isIndexPageNode = true; } } } $node = $nNodes->node[$i]; if($node['type'] == 'page') { if($isIndexPageNode && in_array(3186, $innerPages)) { $node->active = 'active'; } if($node->id == 3186) { $node->active = 'active'; $node->page_active = 'active'; } } if((int)$nNodes['level'] >= 1) { $blockHtml .= ''; // CPタグより左側の文字列を取得 } if( ('lfolder_title' === 'lfirst' && $isFirstNode) || // 1ノード目の場合 ('lfolder_title' === 'lno_first' && !$isFirstNode) || // 1ノード目以外の場合 ('lfolder_title' === 'lmiddle' && (!$isFirstNode && !$isLastNode) ) || // 中間ノードの場合 ('lfolder_title' === 'lno_middle' && ($isFirstNode || $isLastNode) ) || // 中間ノード以外の場合 ('lfolder_title' === 'llast' && $isLastNode) || // 最終ノードの場合 ('lfolder_title' === 'lno_last' && !$isLastNode) || // 最終ノード以外の場合 ('lfolder_title' === 'lindex' && $isIndexPageNode) || // インデックスページノードの場合 ('lfolder_title' === 'lno_index' && !$isIndexPageNode) ) { // インデックスページノード以外の場合 // フォルダノード、ページノード共通 if((int)$nNodes['level'] >= 1) { $blockHtml .= ''; } } elseif('lfolder_title' === 'lrecurse') { if(-1 == $contentEndLevel || (int)$nNodes['level'] <= $contentEndLevel) { if(($i + 1) <= $_endNode && isset($nNodes->node[$i + 1]['type']) && ($nNodes->node[$i + 1]['type'] == 'folder')) { for($j = $i + 1; $j <= $_endNode; $j++) { if(isset($nNodes->node[$j]['type']) && ($nNodes->node[$j]['type'] == 'folder')) { if(isset($nNodes->node[$j]->node)) { // 表示最下部のフォルダインデックスはファイル名称にフォルダ名称を設定 $isOpen = true; if((int)$nNodes['level'] == $contentEndLevel && isset($nNodes->node[$j]->node[0]) && isset($nNodes->node[$j]->node[0]->folder_name)) { $isOpen = false; } if(isset($nNodes->node[$j]->node[0]->close) && ($nNodes->node[$j]->node[0]->close == 'close')) { $isOpen = false; } if(!$isOpen) { $nNodes->node[$j]->node[0]->name = (string)$nNodes->node[$j]->node[0]->folder_name; } $blockHtml .= _getListHtml_97a2e66d196bc3b12d3a4548c5670c39($innerText, $nNodes->node[$j], $contentEndLevel); } } else { break; } } } } } else { // ページノード&公開の場合 if((int)$nNodes['level'] >= 1) { $html = ''; // ブロックパーツのHTMLを取得 if($html !=='') { $blockHtml .= $html; } else { $blockHtml .= ''.mb_convert_encoding(htmlspecialchars($node->folder_name),'UTF-8','UTF-8').''; } } } if((int)$nNodes['level'] >= 1) { $blockHtml .= ''; // CPタグより右側の文字列を取得 } } } return $blockHtml; } } if(isset($nContentListXml->node) && isset($nContentListXml['level'])) { if(!isset($contentEndLevel)) { $contentEndLevel = 0; } $node = $nContentListXml->node; echo _getListHtml_97a2e66d196bc3b12d3a4548c5670c39(''.mb_convert_encoding(htmlspecialchars($node->folder_name),'UTF-8','UTF-8').'', $nContentListXml, $contentEndLevel); } unset($contentEndLevel); } ?> 居村啓子 准教授

TOOLS