Проверь так, децл втупил и сделал проверку автора поста, а не пользователя, читающего тему.
<if test="!in_array( $this->memberData['member_group_id'], array (2,12,18) )">{$field}</if>
Значение $field будет отображаться только авторизованному пользователю, у которого основная группа не равна 2, 12, 18
Для гостей надо проверить особо, у них $this->memberData['member_group_id'] может оказаться пустой, но не думаю, что так будет, должна быть группа гостя.
У себя проверил с публичным полем "Город". Работает.