我试图弄清楚如何正确格式化以下网站的页面: http ://marchofremembrancehouston.org/march/?page=CiviCRM&q=civicrm/event/register&reset=1&id=25
看看 CiviCRM 数据是如何被推送到网站右上角的?我希望表单适合主题的内容区域。
我已经做了很多研究,似乎没有人给出明确的答案。
我试图弄清楚如何正确格式化以下网站的页面: http ://marchofremembrancehouston.org/march/?page=CiviCRM&q=civicrm/event/register&reset=1&id=25
看看 CiviCRM 数据是如何被推送到网站右上角的?我希望表单适合主题的内容区域。
我已经做了很多研究,似乎没有人给出明确的答案。
这是 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() {
此修复不完整,并且会中断 CiviCRM 中的链式加载 AJAX 查询,例如,如果在 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。为什么这种错误在发布之前没有在简单的自动化测试中被捕获和修复,直到今天我都不明白。