Page 1 of 2

Use PHP in entries

Posted: Sat Jan 23, 2021 11:10 am
by Tongara
Edit Arvid: This used to be an answer on the topic "include other content". Since this is a very interesting question for itself, I felt free to create this new topic with it.

A question... is it actually possible to use PHP in flatpress entries and static pages? There are certain things I'd love to be able to do, but after testing I'm assuming it's simply not possible given the pages are rendered using .TXT files.

Any words of wisdom on such? :mrgreen:

Re: Use PHP in entries

Posted: Sat Jan 23, 2021 11:53 am
by Arvid
This is a very interesting question.

I would not bother searching for a direct answer, though. Because this is exactly what the plugins are for :)

Once familiar with their neccessary programming interfaces, you can freely create any PHP logic, let's say, a random number generator. Make sure your plugin also adds a new BBCode element ("randomnumber"). Use this element to display your plugin output in entries and static pages:

Code: Select all

[randomnumber]
...this may be displayed as "23" on your page, and after refreshing, as "87".
And if you need it more dynamically (say, you want to specify the range the generated number has to be in), use BBCode parameters:

Code: Select all

[randomnumber min=10 max=30]
... to make sure the displayed number is always between 10 and 30.
Of course, the plugin code must read from this parameters and use their values in its logic. But this is not difficult to do, you can learn that quickly from existing plugins that have own BBCode elements. Take a look into my audio and video player plugin for example! :)

All the best,
Arvid

Re: Use PHP in entries

Posted: Sat Jan 23, 2021 4:01 pm
by Tongara
Arvid wrote: Sat Jan 23, 2021 11:53 am This is a very interesting question.

I would not bother searching for a direct answer, though. Because this is exactly what the plugins are for :)

Once familiar with their neccessary programming interfaces, you can freely create any PHP logic, let's say, a random number generator. Make sure your plugin also adds a new BBCode element ("randomnumber"). Use this element to display your plugin output in entries and static pages:

Code: Select all

[randomnumber]
...this may be displayed as "23" on your page, and after refreshing, as "87".
And if you need it more dynamically (say, you want to specify the range the generated number has to be in), use BBCode parameters:

Code: Select all

[randomnumber min=10 max=30]
... to make sure the displayed number is always between 10 and 30.
Of course, the plugin code must read from this parameters and use their values in its logic. But this is not difficult to do, you can learn that quickly from existing plugins that have own BBCode elements. Take a look into my audio and video player plugin for example! :)

All the best,
Arvid
Ah yes, If you remember correctly, I've actually made a plugin or two before, so it should have occurred to me right away that this is probably the path I should have chosen, although I do believe I tried this once before to add the Disqus comments system dynamically to my Static pages without much luck.

I will experiment a bit and see if I can do what I want to with this method. Thanks for answering this one so thoroughly, as it's something that could absolutely help many others in the future I think! Very much worth it's own thread~ :)

Re: Use PHP in entries

Posted: Sat Feb 13, 2021 7:28 pm
by Arvid
Tongara wrote: Sat Jan 23, 2021 4:01 pm Ah yes, If you remember correctly, I've actually made a plugin or two before
I, err, was totally aware of that when I wrote my answer ;) :lol:

But indeed, this topic might be useful for future readers.
Please feel free to ask questions that occur to your on your plugin journey!

Re: Use PHP in entries

Posted: Mon Feb 15, 2021 9:03 am
by Tongara
No problem at all, you can't be expected to remember every person and everything! hehe

So, I did try this, but it sadly didn't turn out how I wanted it to. I'll explain the basic idea before sharing any files or code...

With how my website is set up, I wanted the option of adding a custom "Back" link to Static pages much like you see on the main news post pages and index page of flatpress. The idea would be that the static.tpl would contain a line of code for the back button, and it would somehow grab it's code from elsewhere on a static page using a PHP echo so that I could define the target URL on the fly.

So, on the static template the "a href" would work something like this:

Code: Select all

<a href="<?php echo $link;?>">Back</a>
Then of course comes the plugin code, which can be seen in the following file:
https://mega.nz/file/8lgXDSSL#dKqbPuJYp ... v8vjcLJgYY

Then based on the code above, I define the actual link on a Static page in the following way:

Code: Select all

[pagelinks]pagename[/pagelinks]
Sadly, the URL never gets defined, and as such the URL ends up as "mysite.com/<?php%20echo%20$link;?>" instead of "mysite.com/pagename".

I've made sure the plugin is enabled, and I can see in the site's header that the plugin is loaded on the page. I'm sure I'm just missing something really small and I'm going to feel like an idiot when it's pointed out what I'm doing wrong, but the forums are here to help support us, so I'm looking forward to feel foolish! haha

Maybe there is a better way than using PHP for this task? I'm open to ideas!

Re: Use PHP in entries

Posted: Mon Feb 15, 2021 2:09 pm
by Lubomír Ludvík
plugin inlinephp
http://flatpress.cz/flatpress/fp-plugin ... inephp.zip

Code: Select all

[exec]echo(rand(10,100));
echo PHP_VERSION;[/exec]

Re: Use PHP in entries

Posted: Mon Feb 15, 2021 8:54 pm
by Tongara
Lubomír Ludvík wrote: Mon Feb 15, 2021 2:09 pm plugin inlinephp
http://flatpress.cz/flatpress/fp-plugin ... inephp.zip

Code: Select all

[exec]echo(rand(10,100));
echo PHP_VERSION;[/exec]
Sadly this doesn't fix my issue, but it's an absolute game changer when it comes to using PHP in all kinds of entries!

Re: Use PHP in entries

Posted: Tue Feb 16, 2021 5:24 am
by Lubomír Ludvík
YES, you can run file /fp-plugins/locale.php

Code: Select all

[exec]require_once('../locale.php');[/exec]

Re: Use PHP in entries

Posted: Tue Feb 16, 2021 5:53 am
by Tongara
Lubomír Ludvík wrote: Tue Feb 16, 2021 5:24 am YES, you can run file /fp-plugins/locale.php

Code: Select all

[exec]require_once('../locale.php');[/exec]
Okay, good to know.

Anyway, still trying to fix my issue, so if anyone has any idea as requested in one of my last posts, I'd appreciate it. Like I said, I'm open to ideas, and I'm sure I'm just missing something small here. I've tried to be as detailed as possible. :)

Re: Use PHP in entries

Posted: Tue Feb 16, 2021 9:36 am
by dsteuer
Lubomír Ludvík wrote: Mon Feb 15, 2021 2:09 pm plugin inlinephp
http://flatpress.cz/flatpress/fp-plugin ... inephp.zip

Code: Select all

[exec]echo(rand(10,100));
echo PHP_VERSION;[/exec]
Hi, I`ve put it in the wiki. I hope that's is ok? https://wiki.flatpress.org/res:plugins:inlinephp

Arvid: There is a superfluous copy in res:plugins. Looks like only admin can remove files after upload.

Detlef