Wordpress CiviRCM Форматирование контента
Я пытаюсь понять, как правильно отформатировать следующие страницы сайта: http://marchofremembrancehouston.org/march/?page=CiviCRM&q=civicrm/event/register&reset=1&id=25
Посмотрите, как данные CiviCRM помещаются в верхнюю правую часть сайта? Я хотел бы, чтобы форма вписывалась в область содержимого темы.
Я уже провел много исследований, и никто не дал четкого ответа.
2 ответа
Это ошибка в CiviCRM. Вы используете плагин WordPress, который обрабатывает содержимое каждой страницы для создания тегов для Facebook Open Graph (чтобы заполнить рекламное объявление и изображение, которое появляется на вашем посте Facebook, когда вы делитесь страницей). Проблема заключается в том, что обработка содержимого запускает CiviCRM и, следовательно, печатает все содержимое в верхней части страницы.
Проблема, описывающая это немного глубже, находится здесь: https://issues.civicrm.org/jira/browse/CRM-14244
Следующая версия CiviCRM (4.4.5) будет содержать исправление, но если вы спешите опубликовать страницу, вот что вы можете сделать:
Перейдите в файлы вашего сайта в wp-content/plugins/civicrm/civicrm.php
Прокрутите вниз до строки 412 или около того (в зависимости от вашей версии) и найдите строку с надписью
public function invoke() {
Добавьте следующие строки под ним:
if ( !in_the_loop() && !is_admin() && empty($_REQUEST['snippet']) ) { return; }
Это говорит о том, что если вы не отображаете основное содержимое страницы (запускаете "Цикл"), не показывает страницу администратора или не отображаете "фрагмент" (содержимое CiviCRM, принадлежащее другой странице), вернитесь и выполните ничего такого. CiviCRM будет вызван снова, когда пришло время запустить фактический контент страницы.
Для справки, запрос на извлечение, который я сделал в GitHub для обработки этого, находится по адресу https://github.com/civicrm/civicrm-wordpress/pull/36/files, где вы можете увидеть конечный результат.
Если вы находитесь в CiviCRM 4.3 или более ранней версии, вам нужно добавить эти строки в функцию civicrm_wp_invoke, вставляя их после следующего (в строке 292 или рядом с ней):
function civicrm_wp_invoke() {
Это исправление не является полным и разрывает цепочку загрузки AJAX-запросов в CiviCRM, например, для получения раскрывающихся списков состояний, если страна выбрана в CiviProfiles. Фактическое исправление должно проверить это:
if ( !in_the_loop() && !is_admin() && empty($_REQUEST['snippet']) && ($_REQUEST['q'] != "civicrm/ajax/jqState") ) {
return;
}
ПРИМЕЧАНИЕ: это еще не исправлено в 4.4.5, но добавление вышеуказанной строки в wp-content/plugins/civicrm/civicrm.php должно позволить возобновить выбор состояния, иначе вы также заметите неприятную ошибку JavaScript, так как возвращаемое значение - HTML, но вызов ajax ожидает JSON. Почему такого рода ошибки не обнаруживаются и не исправляются до выпуска в простом автоматическом тесте, по сей день я не понимаю.