no i po godzinie myślenia udało się zrobić.
faktycznie {section} pomogło. do tego jeszcze tylko instrukcja if i smiga

{section name=menu loop=$categories_id}
<div id="box_l">
<b>{$categories[menu]}</b>
{section name=str loop=$pages_id}
{if $pages_id[str] eq $categories_id[menu]}
<a href="">{$pages[str]} : {$pages_id[str]}</a>
{/if}
{/section}
</div>
{/section}
$query = "SELECT id, nazwa FROM kategorie ORDER BY id";
$sql_obs -> query($query);
while ($row = $sql_obs -> fetch_row())
{
$c[] = $row['nazwa'];
$c_id[] = $row['id'];
}
$sql_obs -> free_result($query_result = '');
$query = "SELECT id_kat, nazwa FROM strony ORDER BY id";
$sql_obs -> query($query);
while ($row = $sql_obs -> fetch_row())
{
$p[] = $row['nazwa'];
$p_id[] = $row['id_kat'];
}
$sql_obs -> free_result($query_result = '');
$tpl -> assign('categories', $c);
$tpl -> assign('categories_id', $c_id);
$tpl -> assign('pages', $p);
$tpl -> assign('pages_id', $p_id);