Atomikテーマ、アセットシステムで自作css を適用する方法は?

application/themes に atomik/css ディレクトリを作成し、自作の main.css を置いて、
application/bootstrap/app.php に

use \Concrete\Core\Asset\AssetList;
use \Concrete\Core\Asset\Asset;
$al = AssetList::getInstance();
$al->register(
  'css', 'main', 'themes/atomik/css/main.css',
  array());

application/themes/page_theme.php に

    public function registerAssets()
    {
        $this->requireAsset('css', 'main');

    }

をそれぞれ書いて、アセットシステムから main.css を読み込ませようという算段を立てました。

しかし、
headタグ内に、/concrete/js/jquery.js 、
終わりのbodyタグ直前に、/concrete/js/vue.js や /concrete/js/bootstrap.js や /concrete/js/moment.js や /ccm/assets/localization/moment.js が
レンダリングされなくなり、
jQuery が定義されないため、グローバルナビゲーションバーが表示されなくなりました。

レンダリングされなくなった上記の js ファイルを復活させる方法を教えて頂けないでしょうか。
お願いいたします。

#Server
さくらのレンタルサーバ

Concrete Version

Core Version - 9.1.3
Version Installed - 9.1.3
Database Version - 20220908074900

Environment

production

Database Information

Version: 5.7.40-log
SQL Mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Concrete Packages

Free Map (2.1.1)

Concrete Overrides

blocks/content/templates/green_border_top.php, blocks/content/templates/accent_border_top.php, blocks/content/templates, blocks/content, blocks/page_list/templates/whatsnew_list.php, blocks/page_list/templates, blocks/page_list, themes/atomik/elements/footer.php, themes/atomik/elements/header.php, themes/atomik/elements, themes/atomik/page_theme.php, themes/atomik/main.js, themes/atomik/default_.php, themes/atomik/css/main.css, themes/atomik/css, themes/atomik

Concrete Cache Settings

Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

Server Software

Apache

Server API

apache2handler

PHP Version

8.1.20

PHP Extensions

apache2handler, apcu, bcmath, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imagick, intl, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, Reflection, session, SimpleXML, snmp, soap, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib

PHP Settings

max_execution_time - 30
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 65535
max_multipart_body_parts - -1
memory_limit - 128M
post_max_size - 8M
upload_max_filesize - 5M
zend.exception_string_param_max_len - 0
mbstring.regex_retry_limit - 1000000
mbstring.regex_stack_limit - 100000
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - no value
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
unserialize_max_depth - 4096
opcache.jit_bisect_limit - 0
opcache.jit_max_exit_counters - 8192
opcache.jit_max_loop_unrolls - 8
opcache.jit_max_polymorphic_calls - 2
opcache.jit_max_recursive_calls - 2
opcache.jit_max_recursive_returns - 2
opcache.jit_max_root_traces - 1024
opcache.jit_max_side_traces - 128
opcache.max_accelerated_files - 10000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

すみません!とりあえず復旧しました。

public function registerAssets() に、以下を追加しました。

        $this->requireAsset('javascript', 'jquery');
        $this->requireAsset('javascript', 'vue');
        $this->requireAsset('javascript', 'bootstrap');
        $this->requireAsset('javascript', 'moment');
        $this->requireAsset('javascript-localized', 'moment');
        $this->requireAsset('css', 'font-awesome');

他のプログラムに影響は出ないのか、心配ですが。様子を見てみます。

1 Like

このあたりの記事が参考になるかと思います。

1 Like

public function registerAssets() に、以下を追加しました。

Page_theme.php の中ですね。

すでに解決されているのですが、
ユーザーがログインしていない時でも、Concrete CMS が用意している jquery などを読み込み続けたい場合に requireAsset 宣言を使います。

反対に自分のテーマで読み込むことにするのであれば、「こちらで用意する」から読み込まないでねという意味の $this->provideAsset('javascript', 'jquery'); が使えます。

requireAsset で宣言すれば重複して JS ファイルが読み込まれることもないので安全です。