px-files/_sys/php/site.php
public function get_next( $path = null, $opt = array() ){
		if( is_null( $path ) ){
			$path = $this->px->req()->get_request_file_path();
		}
		$filter = true;
		if(!is_null(@$opt['filter'])){
			$filter = !@empty($opt['filter']);
		}
		$skip_children = false;
		if(!is_null(@$opt['skip_children'])){
			$skip_children = !@empty($opt['skip_children']);
		}

		$fin = null;

		$children = $this->get_children($path,$opt);
		$page_bros_next = $this->get_bros_next($path, $opt);
		$parent = $this->get_parent($path);

		//  子供がいたら
		if( !$skip_children && is_array($children) && count($children) ){
			$fin = $children[0];
		}elseif( $page_bros_next!==false ){
			//  次の兄弟がいたら、そのひとがnext
			$fin = $page_bros_next;
		}elseif( $parent !== false ){
			//  親の兄弟
			$fin = $this->get_next($parent, array('skip_children'=>true,'filter'=>$filter));
		}else{
			return false;
		}


		// 除外条件 検証
		if(
			strpos( $this->get_page_info($fin, 'layout') , 'popup' ) === 0 // <- popupはとばす (行き止まりができるので) 'popup' で始まるlayoutは、ポップアップとして扱う。
		){
			return $this->get_next($fin, $opt);
		}

		// フィルター検証
		if( $filter===true &&
			(
				!$this->get_page_info($fin, 'list_flg') // <- リストフラグが降りてたら飛ばす
				|| $this->get_path_type($this->get_page_info($fin, 'path')) == 'alias' // <- エイリアスはとばす (ループが起きるので)
			)
		){
			return $this->get_next($fin, $opt);
		}

		return $fin;
	}
public function get_next( $path = null, $opt = array() ){
		if( is_null( $path ) ){
			$path = $this->px->req()->get_request_file_path();
		}
		$filter = true;
		if(!is_null(@$opt['filter'])){
			$filter = !@empty($opt['filter']);
		}
		$skip_children = false;
		if(!is_null(@$opt['skip_children'])){
			$skip_children = !@empty($opt['skip_children']);
		}

		$fin = null;

		$children = $this->get_children($path,$opt);
		$page_bros_next = $this->get_bros_next($path, $opt);
		$parent = $this->get_parent($path);

		//  子供がいたら
		if( !$skip_children && is_array($children) && count($children) ){
			$fin = $children[0];
		}elseif( $page_bros_next!==false ){
			//  次の兄弟がいたら、そのひとがnext
			$fin = $page_bros_next;
		}elseif( $parent !== false ){
			//  親の兄弟
			$fin = $this->get_next($parent, array('skip_children'=>true,'filter'=>$filter));
		}else{
			return false;
		}


		// 除外条件 検証
		if(
			strpos( $this->get_page_info($fin, 'layout') , 'popup' ) === 0 // <- popupはとばす (行き止まりができるので) 'popup' で始まるlayoutは、ポップアップとして扱う。
		){
			return $this->get_next($fin, $opt);
		}

		// フィルター検証
		if( $filter===true &&
			(
				!$this->get_page_info($fin, 'list_flg') // <- リストフラグが降りてたら飛ばす
				|| $this->get_path_type($this->get_page_info($fin, 'path')) == 'alias' // <- エイリアスはとばす (ループが起きるので)
			)
		){
			return $this->get_next($fin, $opt);
		}

		return $fin;
	}
次のページのIDを取得する。

@param string $path 起点とするページのパス または ページID。省略時、カレントページから自動的に取得します。
@param array $opt オプション(省略可)
<dl>
<dt>$opt['filter'] (初期値: `true`)</dt>
<dd>フィルターの有効/無効を切り替えます。`true` のとき有効、`false`のとき無効となります。フィルターが有効な場合、リストフラグが降りているページとエイリアスが除外され、さらにその次のページを探します。</dd>
<dt>$opt['skip_children'] (初期値: `false`)</dt>
<dd>子供をスキップするか。`true` のときスキップ、`false`のとき子供も対象とします。これは内部で再帰的に実行する際の無限ループを避けるためのフラグとして設けられました。通常はこれを指定する必要はありません。</dd>
</dl>
@return string|bool ページID。存在しない場合は `false`を返します。