我有一个具体的问题,我确实通过本教程在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/