collapse collapse

* User Info

 
 
Welcome, Guest. Please login or register.
Did you miss your activation email?

* Who's Online

  • Dot Guests: 172
  • Dot Hidden: 0
  • Dot Users: 0

There aren't any users online.

* Shoutbox

Refresh History
  • Shoutbox is not for support!
  • {OCS}MasterSeal: STILL love SP :)
    November 24, 2018, 05:05:50 AM
  • ♦ Ninja ZX-10RR ♦: <3 aegersz
    September 13, 2018, 03:36:09 PM
  • aegersz: I STILL <3 LOVE SimplePortal
    September 13, 2018, 07:11:39 AM
  • aegersz: o LOVE you guys - Simple Portal rocks !
    May 09, 2018, 05:18:59 AM
  • Chen Zhen: our apologies for the site being down.. please read server issues topic
    March 22, 2018, 05:32:38 AM
  • {OCS}MasterSeal: LOL PLEASE forget I just posted that. I found the answer in my own dang post back in 2015. lol sorry!
    July 04, 2017, 10:47:55 PM
  • {OCS}MasterSeal: I know this SB isnt' for support, but I just have a general question. Who would I contact to find out where SP stores its block info? Is it DB driven or files? I searched the site but came up with nothing. probably my fault any insight is appreciated.
    July 04, 2017, 10:43:36 PM
  • ♦ Ninja ZX-10RR ♦: Excuse me but what does Simpleportal have to deal with that?
    February 05, 2017, 08:21:14 PM
  • WhiteEagle: of course IMHO that site appears to be dead :(
    February 04, 2017, 01:08:05 PM
  • WhiteEagle: If I can get that, then I'll use it for that site...
    February 04, 2017, 01:07:35 PM
  • WhiteEagle: decided to not use SMF for any projects, unless I can get a copy of the premium version of the fanfiction archive plugin
    February 04, 2017, 01:06:54 PM
  • expertdecisions: cloudflare
    January 28, 2017, 08:01:47 AM
  • aegersz: SM release 2.0.13 !
    January 12, 2017, 06:00:13 AM
  • raffo: Tks Emanuele, even if I didn't understand the fix :D
    November 07, 2016, 02:01:20 AM
  • emanuele: [link]
    November 01, 2016, 12:43:50 PM
  • emanuele: raffo: the English support board is a good place. ;)
    November 01, 2016, 12:43:38 PM
  • raffo: Where can I find the fix for the shoutbox?
    November 01, 2016, 05:06:09 AM
  • {OCS}MasterSeal: To the SP team, I make a point to come here and thank you as much as possible for your work.  so again, THANK YOU!
    October 28, 2016, 10:38:05 AM
  • emanuele: That's indeed funny, the limit is present only in the patch and not the full install.
    October 22, 2016, 06:14:58 PM
  • phantomm: and from what I see only patch is broken, full install package is fine
    October 21, 2016, 03:44:44 PM

* Recent Posts

Re: v 2.3.3 to v2.3.7 by ♦ Ninja ZX-10RR ♦
[December 11, 2018, 04:14:48 PM]


v 2.3.3 to v2.3.7 by rollingrock
[December 11, 2018, 09:36:20 AM]


[Block] Help with editing few lines on Simpleportal by Wallen
[December 09, 2018, 05:10:34 AM]


Re: LinkTree by Chen Zhen
[November 15, 2018, 02:24:51 PM]


Re: blocks showing user avatars by hulapyk
[November 15, 2018, 01:47:11 PM]

If you're interested in helping other members with support requests, consider joining the Community Support Helpers group.

Author Topic: PHP input for $context['html_headers'] at top of block list  (Read 3360 times)

0 Members and 1 Guest are viewing this topic.

Offline Chen Zhen

  • The Underdog
  • Operations Manager
  • *
  • Posts: 1335
  • Gender: Male
  • Kinesis
    • WebDev
  • SMF Version: 2.1
  • EhPortal Version: 1.22
Many scripts for blocks require style sheets and/or js files (ie. jQuery plugins & libraries) to be loaded within the <head> of the document.
Although js files can be added in the body it is not standard practice to do.
However for css files this is mandatory.

I propose a single PHP input (similar to the PHP block textarea) to be put at the very top of the block list.
Allow globals & html content to be added to $context['html_headers'] so that it can be executed in the head of the document.
If it is html content only then globals can not be used and the admin will be forced to add whole url's and restricted/lengthy content.
This is why I suggest PHP execution.
It can be executed at the start of the sportal_init() function in Subs-Portal.php.

Current block content is executed in the body of the template where $context['html_headers'] has already been used in the template.
« Last Edit: April 11, 2016, 09:23:10 AM by Chen Zhen »

Offline ♦ Ninja ZX-10RR ♦

  • Spammer Hammer
  • Support
  • *
  • Posts: 1177
  • Gender: Male
  • Sniper Legends
    • Virtual Interactive Games Entertainment™
  • SMF Version: 2.0.13
  • SP Version: 2.3.6
  • Elkarte Version: 1.0.6
Re: PHP input for $context['html_headers'] at top of block list
« Reply #1 on: April 11, 2016, 11:24:38 AM »
Not as techy as you, but I like the idea.
Have you tried SimplePortal Documentation before asking? ;)
F.A.Q.  English Support  |  Blocks Support
Fancy Feature idea ?!  |  Blocks Requests
Themes & Graphics

▼ My job! ▼

No PMs for support unless it's a paid request. Thank you! :)
#OpIsis

Offline emanuele

  • Developer
  • *
  • Posts: 293
Re: PHP input for $context['html_headers'] at top of block list
« Reply #2 on: April 12, 2016, 02:47:18 AM »
As far as I remember (unfortunately it's been a while since I touched the code so I may be wrong), SP (similarly to most if not all the other portals) have the "bad habit" of running the blocks code directly "in place" while the page is generated, in other words when the code of a block is executed, anything in the template before that block has already been echo'ed to the buffer.
This approach is for sure the easiest and the one that gives end-users the fastest approach to writing their code in a block: 1) grab stuff, 2) do something, 3) echo anything.
The drawback, it that the way it is now, it's impossible doing some stuff (like adding css to <head>) without hooking the buffer into the block (this is possible, a bit ugly but definitely possible).

To solve this problem (and few others alike), each and every block (php blocks as well, don't forget that because I'll come back on the point later) needs to be composed of two parts: the "code" and the "template". This is the path I'm taking with the changes I did a while ago to the ElkArte port of SP.
It's not a terribly huge task, surely a tedious one, potentially a problematic one for non-tech-savvy users, especially when it comes to php blocks.
Why, you ask?
Obviously because anyone has to adopt the "MVC" mentality of "preparing" all the data needed for the output in a place, and use it in another. Once grasped it's not at all a bad thing, though it's another piece of "junk" to each to people that want to write "a simple php block".

Of course there are alternatives (i.e. run the code before sending out the template, instead of using "echo" build a string and return it) that may be better suited, anyway, changes are needed, and changes that will break any currently existing block (unless you pick up yet another (ugly) path, creating the block "source-side", capture the partial buffer created by the block, clean up the buffer, and return the block output).

Offline Chen Zhen

  • The Underdog
  • Operations Manager
  • *
  • Posts: 1335
  • Gender: Male
  • Kinesis
    • WebDev
  • SMF Version: 2.1
  • EhPortal Version: 1.22
Re: PHP input for $context['html_headers'] at top of block list
« Reply #3 on: April 12, 2016, 04:01:25 PM »
Actually my idea is a bit simpler as far as modifying the existing process that SP uses.
I meant just to add 1 single option at the top of the block list (or perhaps from the settings menu) that allows one single php block input specifically to be executed prior to any output.  The Admin would have to understand that using echo at that point would break the template and that only filling variables (ie. $context['html_headers']) is what it is made for (ie. warning in red at the top).   

Offline emanuele

  • Developer
  • *
  • Posts: 293
Re: PHP input for $context['html_headers'] at top of block list
« Reply #4 on: April 13, 2016, 04:35:37 AM »
i.e. introduce another special case instead of actually fix the behaviour? :P