Portal

Developer

Isaac Raway - Airways

3rd Party (Free)

5 downloads (last 90 days)


EE Version Support

  • ExpressionEngine 2

Compatibility

If an item is crossed out, it might be untested, not applicable or incompatible. Contact the developer to be sure.

  • Updater
  • Multi Site Manager
  • Stand Alone Entry Form
  • Low Variables
  • Content Elements
  • Better Workflow
  • Matrix
  • Grid
  • Webservice
  • Publisher

Requirements

  • jQuery for the Control Panel

Add-On Type(s)

Plugin

Tags

Magically transport strings from one place to another.

Portal is very easy to use, simply use {portal:var_name}...{/portal:var_name} pair tags to create a string, and {var_name} anywhere after that to insert the value.

A simple example:


{exp:portal}
    {portal:move_it}
        Move this around!
    {/portal:move_it}
    {portal:move_it:append}
        Take this with you!
    {/portal:move_it:append}

    <div class="wrapper">
        {move_it}
    </div>
{/exp:portal}

This will spit out something like:


    <div class="wrapper">
        Move this around!
        Take this with you!
    </div>

(Indentation reformatted for clarity.)

But it gets better!

Note this addon is particularly powerful in combination with Will Hunting, my advanced math evaluation plugin.

This advanced example loops through Mason content blocks in a Content Elements field and finds all of the items that need a link generated to them… then only spits out the navigation bar if there is more than one thing to link to!

The same technique could easily be used to loop over any kind of item (for instance, Categories on an entry, or entries in a Channel Entries loop, etc.), count them, and do different things with the output depending on the count.


{exp:channel:entries entry_id="{embed:entry_id}" limit="1" dynamic="no"}
    {exp:will_hunting:solve_pair parse="inward"}
        {exp:portal}
            {portal:internal_nav}
                {$nav_count=0}
                {entry_blocks}
                    {mason}
                        {rich_text}
                        {if "{block_style}" == "section"}
                            {$nav_count=$nav_count+1}
                            {if "{$nav_count}" == 1}
                            <div class="section internal_nav">
                                <div class="row">
                            {/if}
                            <div class="priority_{$nav_count}">
                                <div class="link">
                                    <a href="#{block_header}" {if "{$nav_count}" == 1}class="active chevron"{/if}>{block_header}</a>
                                </div>
                            </div>
                        {/if}
                        {/rich_text}
                    {/mason}
                {/entry_blocks}
                {if "{$nav_count}" > 0}
                    </div> <!-- close internal_nav row -->
                </div> <!-- close section internal_nav -->
                {/if}
            {/portal:internal_nav}

            {if "{$nav_count}" > 1}
                {internal_nav}
            {/if}
        {/exp:portal}
    {/exp:will_hunting:solve_pair}
{/exp:channel:entries}

How does this compare to Stash etc?

Stash is a great add-on but can be very complex and in some cases I have seen it not deal well with certain parse conditions. This is just another tool in your toolbox, not a complete replacement for Stash or other add-ons.

In particular, Portal’s parsing semantics are much more predictable—it parses from the top to the bottom every time, consistently. The same cannot be said for other add-ons that use separate {exp:*} plugin tags for each operation of setting, appending, and getting a value. This means that Portal can handle complex parse situations more easily in some cases.

But again, use what works.

Download Portal

EE Support Downloads Add-On Version Release Date
2.8.0+ Download 1.02 Mar 11, 2015
2.8.0+ Download 1.03 Apr 28, 2015

This entry was created March 12, 2015, 9:17 am.
This entry was last updated April 28, 2015, 9:25 pm.

Disclaimer: Information about ExpressionEngine add-ons is provided as a service to you, the user, and every member of the ExpressionEngine community. devot:ee is not responsible if you hose, mangle, wreck, or otherwise destroy your EE website by installing an add-on that you found out about at this site, regardless of its rating, Favorites status, commercial or free status, or general popularity. Caveat EEmptor!

Returns: devot:ee has a 30-day return policy on all commercial add-ons sold through devot-ee.com. If you need to return an add-on, do not go to the developer or the developer's site, but rather visit our returns page at https://devot-ee.com/returns to initiate your return. If you have questions, email support@devot-ee.com.

3 Reviews:

rootlevel 03.02.18

rootlevel
Rating - {addon_rating_average}

I have upgraded several projects from EE2 to EE3/4 and miss this flexibility. This was an underrated gem that everyone needs in the ee community. Come back to us.

jtrascap 08.05.15

jtrascap
Rating - {addon_rating_average}

While some may question having another similar tool, Portal is far easier to work with than Stash, and that makes it far more accessible a tool to use. For many developers, this is the sweet spot.

AnetaG 03.17.15

AnetaG
Rating - {addon_rating_average}

How does this compare to time proved addons like String(https://devot-ee.com/add-ons/string), NSM Transplant(https://devot-ee.com/add-ons/nsm-transplant), MX Jumper (https://devot-ee.com/add-ons/mx-jumper)?

One need one more add-on with same functions?