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) будет содержать исправление, но если вы спешите опубликовать страницу, вот что вы можете сделать:

  1. Перейдите в файлы вашего сайта в wp-content/plugins/civicrm/civicrm.php

  2. Прокрутите вниз до строки 412 или около того (в зависимости от вашей версии) и найдите строку с надписью

    public function invoke() {
    
  3. Добавьте следующие строки под ним:

    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. Почему такого рода ошибки не обнаруживаются и не исправляются до выпуска в простом автоматическом тесте, по сей день я не понимаю.

Другие вопросы по тегам