I'm displaying a non-interactive "bookings calendar" page using Calendar and Views, and need to control several elements of the display. For each item, I've figured out a way to hack it, but my solutions are inelegant, and I have to believe there's a better way even though many hours of mucking around under the hood did not lead me to it.
1. Force view to "Year" (Calendar defaults to "Month" view)
I did this in template.php, implementing theme_calendar_display() and checking the value of param $view->name against the hard-coded name of my view and setting $view->calendar_type = 'year'.
function phptemplate_calendar_display(&$view, ...){
if ($view->name == {hard-coded value}) $view->calendar_type = 'year'; //**UGLY!**
...
2. Disable "Year Month Week Day" links / views
I did this also in template.php:
function phptemplate_calendar_show_nav($view, ...){
if ($view->name == {hard-coded value}) {/* don't show nav links */}
...
3. Force page title to view name instead of calendar module's default ("Year", "Month", etc.)
I did this in page.tpl.php, using a custom function, declared in template.php:
<?php
/**
* Determine if custom page title should be displayed
* @param $title
* Current/default page title
* @return Correct title
*/