Custom block template asset not loaded
Permalink
When I use another template than the main template. The JavaScript for the slider is not loaded. When I don't select another template. The swiper js is loaded. Since this file is registered via the Assetlist I expected the JavaScript would also be available for template files of this block.
The custom block has two templates the default view.php and /templates/content/view.php
In the controller I register the assets on start and call them in registerViewAssets.
Via the network panel in Chrome I can see that the js is not loaded when I use the template file. Is there something wrong with the code or dit I not understand the concept of Asset registering?
Thanks
The custom block has two templates the default view.php and /templates/content/view.php
In the controller I register the assets on start and call them in registerViewAssets.
public function on_start() { //register assets $al = \Concrete\Core\Asset\AssetList::getInstance(); $al->register( 'javascript', 'swiper', 'blocks/swiper/swiper.jquery.min.js', array('version' => '3.0.7', 'minify' => false, 'combine' => true) ); $al->registerGroup('swiper', array( array('js', 'swiper') )); } public function registerViewAssets() { $this->requireAsset('javascript', 'jqeury');
Viewing 15 lines of 17 lines. View entire code block.
Via the network panel in Chrome I can see that the js is not loaded when I use the template file. Is there something wrong with the code or dit I not understand the concept of Asset registering?
Thanks
Thanks for the reply. Caching is not enabled at this moment. I have moved the asset registering and require to registerViewAssets. And fixed ('js' => 'javascript') in the registering.
After this I cleared the cache, refreshed the block. Unfortunately the JavaScript is still not loaded. But this is only the case when I select a template for the block. When the main view.php is used the JS is loaded.
To test if the function is called I echo "string". This works.
After this I cleared the cache, refreshed the block. Unfortunately the JavaScript is still not loaded. But this is only the case when I select a template for the block. When the main view.php is used the JS is loaded.
public function registerViewAssets() { //check if function is triggered echo "string"; //register assets $al = \Concrete\Core\Asset\AssetList::getInstance(); $al->register( 'javascript', 'swiper', 'blocks/swiper/swiper.jquery.min.js', array('version' => '3.0.7', 'minify' => false, 'combine' => true) ); $al->registerGroup('swiper', array( array('javascript', 'jquery'), array('javascript', 'swiper') )); $this->requireAsset('swiper');
Viewing 15 lines of 16 lines. View entire code block.
To test if the function is called I echo "string". This works.
I Found the problem. Because the js file was in the js folder. It got loaded for the main view.php. The asset registering was wrong:
- the path was incorrect
- pkg name was not defined
- the path was incorrect
- pkg name was not defined
public function registerViewAssets() { $pkg = 'package_handle'; //register assets $al = \Concrete\Core\Asset\AssetList::getInstance(); $al->register( 'javascript', 'swiper', 'blocks/swiper/asset/swiper.jquery.min.js', array('version' => '3.0.7', 'minify' => false, 'combine' => true), $pkg ); $al->register( 'css', 'swiper', 'blocks/swiper/css/swiper.css', array('version' => '3.0.7', 'minify' => false, 'combine' => true), $pkg );
Viewing 15 lines of 22 lines. View entire code block.
Hi,
Have the same problem and couldn't figure it out. I have something like this at package main controller file and it's not working:
Have the same problem and couldn't figure it out. I have something like this at package main controller file and it's not working:
$al = AssetList::getInstance(); $al->register('css', 'my_package_css', 'css/my_package_css.css', array(), 'my_package_handle');
The path is wrong should start with: blocks/blockname/foldername/file.css
The css i want to include is at packages/my_package/css/*.css
The path is wrong should start with: blocks/blockname/foldername/file.css
Do you have block cache enabled?
Have you tried registering the assets in registerViewAssets() instead of on_start()?
"Ah, interesting. I think if a block is cached it doesn't run on_start() or the view() method.
In the meantime you can probably register the assets in the registerViewAssets() before running requireAsset() and that would probably fix it. In the grand scheme of things we should probably run on_start() regardless of whether the block is cached or not."
https://www.concrete5.org/community/forums/5-7-discussion/5.7-docume...