Page 1 of 1
[SOLVED] Functions.php example
Posted: Wed Aug 09, 2017 9:15 am
by coldheartg3
Hi everyone,
Just started to learn WonderCMS, and very happy so far.
I'm building a one-page website, and I need multiple editable block.
On the Github page:
https://github.com/robiso/wondercms/wik ... s.php-file functions.php is mentioned as the preferred way to add more editable areas. But that's all information there is.
Does someone have an example functions.php that i can study to see how this is used ? None of the available themes has a functions.php, so I really do not know how to get started on this.
Thanks in advance !
Re: Functions.php example
Posted: Wed Aug 09, 2017 12:18 pm
by wiz
Hi coldheartg3, welcome to the community.
To save yourself some trouble, you can use a plugin for creating additional contents:
https://github.com/robiso/wondercms-plu ... l-contents
If you would like to do it manually, this requires creating functions.php in your theme folder, here's an older example of how we used to do it (might need some editing).
Code: Select all
// REMOVED - CHECK NEXT POST FOR CORRECT CODE
I reckon it would be easier to use a plugin (as seen in our demo
https://wondercms.com/demo).
Re: Functions.php example
Posted: Wed Aug 09, 2017 1:22 pm
by coldheartg3
It seems with the plugin I can only add new blocks within the 'content' section defined by <?=wCMS::page('content')?>.
Or am I missing something ?
I have different sections in my one-pager, i should be able to edit them all.
Isn't working with functions.php not easier in that case ?
I now added functions.php with the code you supplied to my theme folder, and added <?=wCMS::block('newEditableArea')?> to my theme.php, but there is no editable area where <?=wCMS::block('newEditableArea')?> is placed...
Re: Functions.php example
Posted: Wed Aug 09, 2017 3:41 pm
by wiz
You are correct.
Got this working again, here's the revamped code:
Code: Select all
function newEditableArea() {
// Check if the newEditableArea area is already exists, if not, create it.
if (empty(wCMS::get('blocks','newEditableArea'))) {
wCMS::set('blocks','newEditableArea', 'content', '<h4>test!</h4><p>This is an example of another editable subside area.</p>');
}
// Fetch the value of the newEditableArea from the database.
$value = wCMS::get('blocks','newEditableArea','content');
// If value is empty, let's put something in it by default. (IMPORTANT)
if (empty($value)) {
$value = 'Empty content.';
}
// It's necessary to pass the editable method to the fetched value/content
// to make the area editable ONLY if admin is logged in.
if (wCMS::$loggedIn) {
// If logged in, it must be editable...
return wCMS::block('newEditableArea');
}
// If not logged in, don't make it editable!
return $value;
}
In your theme.php, you are
not going to call <?=wCMS::block('newEditableArea')?>, as we just created a
function. So in your theme.php, call the function we've created:
Or with some styling:
Code: Select all
<div class="container-fluid blueBackground whiteFont">
<div class="row">
<div class="col-lg-12 text-center padding40">
<?=newEditablearea()?>
</div>
</div>
</div>
Let me know how this works for you.
Re: Functions.php example
Posted: Wed Aug 09, 2017 5:15 pm
by coldheartg3
Yes, this works for me. Thanks for the advice and the help!
If some developer with lots of time on his hands would like tot dig into this: it would be very nice if there was a plugin that would just index all <?=wCMS::block('...')?> blocks in theme.php and make them editable on the fly
Re: [SOLVED] Functions.php example
Posted: Wed Aug 09, 2017 7:56 pm
by wiz
You're welcome, marking thread as solved. Will add this as an example to our wiki. (Edit: Added to our wiki:
https://github.com/robiso/wondercms/wik ... able-areas)
Good suggestion and thank you for participating.
Stay tuned for an awesome upcoming update!
Re: Functions.php example
Posted: Mon Jan 27, 2020 3:58 pm
by bmherard
wiz wrote: ↑Wed Aug 09, 2017 3:41 pmLet me know how this works for you.
I have a working instance of WonderCMS 3.0.4 but can't get the functions example for this version (that is in Docs GitHub pages) to work. I don't want to use the plugin for additional content as I want my editable area to be somewhere other than under the usual content areas.
The editable blocks function will show at the very top of all pages if I omit opening and closing tags <?php ... ?> from the functions.php file (see below). It's wrong but I at least know the theme is recognizing the file. When I include <?php ... ?> the editable area doesn't display.
Code: Select all
function newEditableArea() { // Check if the newEditableArea area is already exists, if not, create it if (empty($Wcms->get('blocks','newEditableArea'))) { $Wcms->set('blocks','newEditableArea', 'content', 'Your content here.'); } // Fetch the value of the newEditableArea from database $value = $Wcms->get('blocks','newEditableArea','content'); // If value is empty, let's put something in it by default if (empty($value)) { $value = 'Empty content'; } if ($Wcms->loggedIn) { // If logged in, return block in editable mode return $Wcms->block('newEditableArea'); } // If not logged in, return block in non-editable mode return $value; }
Using <?=newEditableArea()?> in the theme disables editing anything and removes the remaining content below it entirely.
Using <?= $Wcms->block('newEditableArea')?> just doesn't display the editable area but the page works otherwise.
Any insight into this is appreciated.
Re: [SOLVED] Functions.php example
Posted: Wed Jan 29, 2020 4:05 pm
by wiz
I'll try this out today. Honestly, I haven't tested this with 3.0.x yet
Will report back shortly.
Re: [SOLVED] Functions.php example
Posted: Wed Jan 29, 2020 4:58 pm
by wiz
I've updated the documentation with clearer instructions and the missing global variable:
https://github.com/robiso/wondercms/wik ... ble-blocks
The issue was missing
, which was introduced with WonderCMS 3.0.0.
Let me know if this works for you.