Здравствуйте. Есть блоки которые выводятся на любой заданной странице.
в базе 2 таблице pages и blocks при выборе из админки на какой странице выводить блок вноситься запись в pages_blocks где только id блока и странице.
Код модели many_to_many
public function getRelatedBlocks($page_id)
{
//Выбираем id всех блоков, относящихся к данной странице
$blocks_ids = $this -> selectColumn(array("fields->" => "blocks_id",
"pages_id" => $page_id,
"table->" => "pages_blocks"));
//Если это не предусмотреть в оператор "id->in" пойдет пустая строка и возникнет SQL ошибка
if(!count($blocks_ids))
return;
$html = "";
//Извлекаем содержимое активных блоков
$rows = $this -> select(array("id->in" => implode(",", $blocks_ids), "active" => 1));
foreach($rows as $row)
{
$html .= "<h3>".$row["name"]."</h3>";
$html .= "<div>".$row["content"]."</div>";
}
return $html;
}
-----------------------------------------------
пример вывод данных в шаблон странице из простой модели
$content = $mv -> pages -> defineCurrentPage($mv -> router);
echo $content -> name;
echo $content -> title;
echo $content -> content;
есть объект $content с данными текущей страницы. В нем есть $content -> id это id данной страницы из таблицы pages.
В таблице pages_blocks стоят строки со связями страниц и блоков по их id. Надо извлечь оттуда все строки у которых pages_id = $content -> id. И далее из этих строк взять blocks_id которые и будут являться блоками для страницы.