集成Yii和Wordpress时Jquery无法正常工作

时间:2014-01-03 17:24:15

标签: jquery wordpress jquery-ui yii cdata

好的,所以我一直在努力整合Yii(特别是Lightspeed webstoreOn Github))和Wordpress。

test.theoldhardwarestore.com在他drumaddict postblog page指示后,{{3}}取得了重大进展。

但是当jquery卷入其中时我陷入了困境。 Lightspeed Webstore使用jquery-ui对话框进行登录。

在包含Yii内容的页面(如主页)上,效果很好。 但是在没有Yii内容的任何页面上(如{{3}}),它不会隐藏登录对话框,也不会在单击“登录”时弹出到中心屏幕。

enter image description here

看看源代码,显然Yii在对话框html之前添加了带有CData的javascript。在没有Yii内容的页面上,这不会发生。因为我还没有和Yii合作过多,所以我不知道在哪里添加它。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这似乎不是最好的解决方案,但我确实让它发挥作用。这是我做的:

复制yii页面上生成的CData并将其放入wp函数中:

function add_login_dialog()
{
echo '<script type="text/javascript" src="/assets/a9725a95/jui/js/jquery-ui.min.js"></script>';
echo "CDATA goes here";

if (Yii::app()->user->isGuest)
    {
        Yii::app()->controller->beginWidget('zii.widgets.jui.CJuiDialog',array(
            'id'=>'LoginForm',
            'options'=>array(
                'title'=>Yii::t('global','Login'),
                'autoOpen'=>false,
                'modal'=>'true',
                'width'=>'350',
                'height'=>'365',
                'resizable'=>false,
                'position'=>'center',
                'draggable'=>false,
            ),
        ));

        Yii::app()->controller->renderPartial('/site/_login',array('model'=>new LoginForm()));
        Yii::app()->controller->endWidget('zii.widgets.jui.CJuiDialog');}
add_action('wp_footer','add_login_dialog', 100);

然后我还需要添加:

    if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
function my_jquery_enqueue() {
 echo '<link rel="stylesheet" type="text/css" href="/assets/1f0ab574/css/bootstrap.css">';
 echo '<link rel="stylesheet" type="text/css" href="/assets/a9725a95/jui/css/base/jquery-ui.css">';
 echo '<script type="text/javascript" src="/assets/a9725a95/jquery.min.js"></script>';
 echo '<script type="text/javascript" src="/assets/a9725a95/jquery.yiiactiveform.js"></script>';
 echo '<script type="text/javascript" src="/assets/1f0ab574/js/bootstrap.js"></script>';
}