Как отобразить календарь в Drupal? - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь использовать модуль блока календаря и в основном отображаю календарь в своей теме. Поэтому я включил модуль в интерфейсе администратора, а затем в своем файле темы (page.tpl.php) набрал следующее:

$block = (object)module_invoke('calendar_block', 'block', 'view', '0');
print theme('block',$block); 

Однако это только отображает «КАЛЕНДАРЬ» в верхнем регистре, но календарь не отображается. Когда я смотрю на исходный код, я вижу только div с классом calendar_ajax, который заставляет меня думать, что рендеринг должен выполняться с помощью JavaScript, но этого не происходит.

Кто-нибудь знает, в чем может быть проблема?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Попробуйте календарный модуль .Это позволяет использовать модуль Views для настройки календарей различного содержимого.

2 голосов
/ 14 декабря 2011

Если, как представляется, рендеринг календаря происходит с помощью JavaScript, проблема, вероятно, заключается в том, что вы создаете блок «вручную» из кода в файле шаблона, а не «обычным» способом добавления его в регион с помощью страница конфигурации блока.

Модуль, вероятно, добавляет необходимый JavaScript с помощью вызова drupal_add_js(), который добавляет файлы JavaScript или код к переменным, передаваемым в шаблон страницы для включения вывода. Тем не менее, это работает, только если drupal_add_js() вызывается перед выполнением / рендерингом page.tpl.php , поскольку файлы и код JavaScript уже собраны / агрегированы для вывода на тот момент, поэтому поздно, чтобы добавить больше.

Хотя есть способы обойти эту проблему внутри page.tpl.php (или в функции предварительной обработки), они уродливы, и их следует избегать, если это возможно. Попробуйте использовать «обычный» способ добавления блоков в регионы (или посмотрите альтернативный модуль, предложенный mikl).


РЕДАКТИРОВАТЬ: Что касается «нормального» способа, я бы посоветовал взглянуть на документацию Работа с блоками (контент в регионах) , так как она дает хороший обзор и имеет несколько полезных ссылок на более подробная информация.

Для быстрого доступа проверьте страницу конфигурации admin/build/block/list вашего экземпляра Drupal. На каждую включенную тему должна быть предоставлена ​​одна страница (вкладка), в которой перечислены регионы тем, а также блоки, размещенные в этих регионах.

В нижней части этих списков вы найдете блокированные блоки, то есть те, которые не назначены ни одному региону. Я ожидаю, что там будет указан блок календаря, и вы можете попытаться переместить его в одну из областей ваших тем и посмотреть, появится ли он тогда (или еще лучше, сначала переключитесь на стандартную тему Garland, протестируйте блок там, и затем переключитесь обратно на свою тему - таким образом, вы можете быть уверены, что она работает в принципе, независимо от настроек / настроек вашей темы).

0 голосов
/ 09 декабря 2011

Вы пробовали что-то подобное?

$block = module_invoke('calendar_block', 'block', 'view', 0);
print $block['content'];
...