javascript - 具体5 ccm_activateTabBar() 未登录时未定义

标签 javascript php jquery concrete5

我有一个具体的问题,我确实通过本教程在crete5 v8中构建了一个带有选项卡的组件:

Creating tabbed panels in concrete5

只要我登录到crete5,它就工作得很好,一旦我没有登录,我就会在控制台中收到以下错误,因此我无法单击不同的选项卡:

Uncaught ReferenceError: ccm_activateTabBar is not defined at HTMLDocument. (entsorgung-von-abfaellen:84) at j (jquery.js:2) at Object.fireWith [as resolveWith] (jquery.js:2) at Function.ready (jquery.js:2) at HTMLDocument.J (jquery.js:2)

错误引用了第 84 行的这一部分:

<script type="text/javascript">$(function() { ccm_activateTabBar($('#ccm-tabs-1077221103'));});</script>

它紧跟在 ul 元素之后,似乎是由crete5 生成的。

我根本找不到任何相关内容,我猜这与丢失的 Assets 有关,这些 Assets 仅在以管理员身份登录时加载。

我目前仅在未登录时加载以下资源:

$u = new User();
if(!$u->isLoggedIn()) {
  $this->requireAsset('javascript', 'jquery');
  $this->requireAsset('jquery/ui');
}

也许有人已经使用过crete5选项卡并且可以帮助我解决这个错误。

最佳答案

根据 Michele Locati 的建议,您可能应该使用 jquery/ui 或 bootstrap 组件来构建选项卡组件。

但是,如果您发现自己处于与我相同的情况,一个非常简单的解决方法就是复制 tabs.js

concrete/js/build/core/app/tabs.js

复制到您的主题文件夹,如果用户未登录,则将其包含在内。

例如这样:

<?php
$u = new User();
if(!$u->isLoggedIn()) : ?>
  <script src="<?php echo $view->getThemePath(); ?>/js/c5_tabs/tabs.js"></script>
<?php endif; ?>

tabs.js 是 app.js 的一部分,app.js 相当大,所以我只使用 tabs.js,它只包含我缺少的所需功能。

此信息归功于 concrete5 forum 的 MrKDilkington :

关于javascript - 具体5 ccm_activateTabBar() 未登录时未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789390/

相关文章:

javascript - 如何使用 ajax/javascript 获取 json 文件的创建日期?

javascript - 无法从 React Native 中的父组件调用子组件方法

javascript - 如何在 Vue JS 2 中间接自嵌套组件?

javascript - 解析 dom 元素时 JqueryUI slider 不工作

php - 使用 CodeIgniter Active Records 插入数据

jquery - 溢出问题 :hidden on mouseover in Chrome

javascript - 将链接显示为 contenteditable div 中的链接

php - 将字符串视为字符数组是否会返回 “Uninitialized string offset”通知?

php - 如何在 nginx (Ubuntu 16.04) 上配置基本的 FastCGI 缓存

javascript - 单击文本以选中复选框