px-files/_sys/php/site.php
public function get_prev( $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']);
		}

		$fin = null;
		$current_page = $path;

		//  前の兄弟がいたら、そのひとがprev
		$page_bros_prev = $this->get_bros_prev($current_page,$opt);
		if($page_bros_prev!==false){
			// [兄がいた場合]
			// 前の兄弟の子供を調べる。
			$fin = $page_bros_prev;
			while( $prev_children = $this->get_children($fin, $opt) ){
				if(is_array($prev_children) && count($prev_children)){
					// 該当する子供がいたら末っ子がprev
					$fin = $prev_children[count($prev_children)-1];
					continue;
				}
				break;
			}
		}else{
			// [兄がいない場合]
			// 親を返す
			$parent = $this->get_parent($current_page);
			if($parent===false){
				return false;
			}
			$fin = $parent;
		}

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

		return $fin;
	}
public function get_prev( $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']);
		}

		$fin = null;
		$current_page = $path;

		//  前の兄弟がいたら、そのひとがprev
		$page_bros_prev = $this->get_bros_prev($current_page,$opt);
		if($page_bros_prev!==false){
			// [兄がいた場合]
			// 前の兄弟の子供を調べる。
			$fin = $page_bros_prev;
			while( $prev_children = $this->get_children($fin, $opt) ){
				if(is_array($prev_children) && count($prev_children)){
					// 該当する子供がいたら末っ子がprev
					$fin = $prev_children[count($prev_children)-1];
					continue;
				}
				break;
			}
		}else{
			// [兄がいない場合]
			// 親を返す
			$parent = $this->get_parent($current_page);
			if($parent===false){
				return false;
			}
			$fin = $parent;
		}

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

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

@param string $path 起点とするページのパス または ページID。省略時、カレントページから自動的に取得します。
@param array $opt オプション(省略可)
<dl>
<dt>$opt['filter'] (初期値: `true`)</dt>
<dd>フィルターの有効/無効を切り替えます。`true` のとき有効、`false`のとき無効となります。フィルターが有効な場合、リストフラグが降りているページとエイリアスが除外され、さらにその前のページを探します。</dd>
</dl>
@return string|bool ページID。存在しない場合は `false`を返します。