Shopware - 将$ sUserLoggedIn-Variable传递给Widget

时间:2015-05-26 10:00:25

标签: php smarty shopware

我目前在Shopware-Widget中请求用户是否登录时遇到问题。 我需要这样做,因为如果用户没有登录,应该隐藏Emotion-Pages上的一些元素。我刚刚做的是将component_html.tpl中的代码改为这样的代码:

{if $Data.cms_title|substr:0:1 == "_"}
    {assign var="private" value=true}
{else}
    {assign var="private" value=false}
{/if}


{if $Data.cms_title}
    <div class="page-header">
        <h3>{$Data.cms_title|substr:1}</h3>
        {if $private and $sUserLoggedIn}<p>This block is private</p>{/if}
    </div>
{/if}
{$Data.text}

不幸的是,默认情况下,Shopware没有将模板变量(在本例中为$ sUserLoggedIn)传递给小部件,我不知道如何解决问题。

任何帮助表示赞赏:) 问候

3 个答案:

答案 0 :(得分:1)

您是否尝试将$sUserLoggedIn设为全局变量?您可以在Shopware docs中找到教程。

答案 1 :(得分:0)

这很丑陋,但是商店用它自己的代码来做。嗯,随着商品,几乎所有东西看起来像一个黑客。 在我的插件引导程序中,我做了:

$view->assign('isUserLoggedIn', !empty(Shopware()->Session()['sUserId']));

答案 2 :(得分:0)

最好的方法是将DI容器注入您的班级。

之后,您可以通过$session = $this->container->get('session');

访问Sesson

现在你可以这样做了:

$view->assign('isUserLoggedIn', !empty($session->sUserId)); or
$view->assign('isUserLoggedIn', !empty($session->offsetGet("sUserId"));