Jump to content
a-ok

PageTableExtended admin layout

Recommended Posts

Hi folks,

I've been using the PageTableExtended recently to create some dynamic/curated sections on my site which is working really well, functionality wise, but the admin layout in the CMS is a little odd to work with. I have attached a screenshot of how one of my setups currently looks. You'll see it's hard to know what 'flexible-content-block' is an image, or text, or embeddable media etc. What would be really useful is to see the 'page' title on this screen. I have attached a screenshot with an idea. So, is something like my proposal currently possible, and if not, could it be added to a feature list? Wordpress's ACF flexible content area use this type of setup and it's a lot easier to maintain and organise. Especially for clients/users. Or, is there a way which I can fork this and build this layout for others to use if they find it useful?

post-2553-0-78564500-1425645467_thumb.pn

post-2553-0-62042300-1425645729_thumb.pn

Thanks,

R

Share this post


Link to post
Share on other sites

I think the regular PageTable Field is already doing what you want.

Just choose some Templates and you can select in the entry tab which fields to show up.

post-1843-0-04411600-1425652166_thumb.pn

Share this post


Link to post
Share on other sites

Yep, definitely using the Extended version. But maybe it's to do with the 'Automatic Page Name Format' field? See my screenshots below. Any way to make the 'template label' appear as the type? Do you see what I mean?

Screen%20Shot%202015-03-06%20at%2014.31.

Screen%20Shot%202015-03-06%20at%2014.33.

Share this post


Link to post
Share on other sites

I managed to found out where it is outputting Automatic Page Name Format (flexible-content-block in this case) in the wire

protected function renderTableCol(Page $item, array $fields, $column, $width, $linkURL = '') {
    $out = $this->getItemValue($item, $fields, $column); 
    if($linkURL) $out = "<a class='InputfieldPageTableEdit' data-url='$linkURL' href='#'>$out</a>";
    $attr = $width ? " style='width: $width%'" : '';
    return "<td$attr>$out</td>";
}

So, where it is outputting the `getItemValue` can it not output the label of the template being used?

Ideally something like

$templateLabel = $template->label;
if($linkURL) $out = "<a class='InputfieldPageTableEdit' data-url='$linkURL' href='#'>$templateLabel</a>";

Share this post


Link to post
Share on other sites

Yep, definitely using the Extended version.

Sorry missed your point a bit, thought you wanted a more "descriptive" layout instead of only better titleing. backes already showed the part of the pagetable configuration, where you can change which rows should be visible. Just put title in the first line and you'll get the title there.

Edit: If you're talking about the title of the type of page use "template" or even "template.label"

Share this post


Link to post
Share on other sites

Thanks for the help. I have put title, but the title is automatically generated as I don't want the user to have to type 'Image' or 'Image' every time. I have hidden this from the editor by default (see attachment) I'd like the title of the type of page to be shown here.

Screen%20Shot%202015-03-06%20at%2015.21.Screen%20Shot%202015-03-06%20at%2015.21.

Share this post


Link to post
Share on other sites

You don't seem to have noticed the edit to my last post. It's doable with "template" or "template.label".

  • Like 1

Share this post


Link to post
Share on other sites

Thanks. But do you mean adding this under 'Automatic Page Name Format'?

Or here:

protected function renderTableCol(Page $item, array $fields, $column, $width, $linkURL = '') {
    $out = $this->getItemValue($item, $fields, $column); 
    if($linkURL) $out = "<a class='InputfieldPageTableEdit' data-url='$linkURL' href='#'>" . $out->template.label . "</a>";
    $attr = $width ? " style='width: $width%'" : '';
    return "<td$attr>$out</td>";
}

Share this post


Link to post
Share on other sites

In neither. If you're editing the pageTable field there's a textarea "Table fields to display in admin" under the "Input" tab. There's the place to change the columns.

  • Like 2

Share this post


Link to post
Share on other sites

Haha yes! That is brilliant. I'm guessing you can't change the 'Template > Template.label' text to something more user friendly? That's definitely not the end of the world though. Really really appreciated.

Screen%20Shot%202015-03-06%20at%2015.58.

Share this post


Link to post
Share on other sites

Hi all!

Bringing up this old thread...

I'm guessing you can't change the 'Template > Template.label' text to something more user friendly?

My hope was to solve this by modifying the entries in the textarea "Table fields to display in admin".

For, say,  a field "text" of fieldtype file with the Label "Notes"  I had the entry "text.filesizeStr", hence the column title was "NOTES > TEXT.FILESIZESTR".

Wanting the title "SIZE" instead, I tried the entry "Size=text.filesizeStr".

And really, the column title changed to "SIZE". But the column lost its values - all its cells were empty.

So I assume that it needs just a slightly different syntax for the entry to work... Suggestions welcome!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By tron1000
      Hello! I use PW 3.0.98 and I have frontend editing enabled for a PageTable Field. Somehow, when I double click the field in the frontend, the iframe in wich the content is displayed is very small (see screenshot). I couldn't find out if thats some CSS conflict or another problem. Any suggestions? Thanks, Andrej
       

    • By Noel Boss
      I use a PageTable field to make edits to children of pages more intuitive…
      To register the hooks, insert the following Snippet inside your init function in your module (or add it to your init.php file):
      /** * Initialize the module. * * ProcessWire calls this when the module is loaded. For 'autoload' modules, this will be called * when ProcessWire's API is ready. As a result, this is a good place to attach hooks. */ public function init() { // Prefill pageTable field $this->wire()->addHookBefore('InputfieldPageTable::render', $this, 'addChildrenToPageTableFieldsHook'); $this->wire()->addHookBefore('InputfieldPageTableAjax::checkAjax', $this, 'addChildrenToPageTableFieldsHook'); } Then, add this hook method:
      /** * Fill pagetable fields with children before editing…. * * @param HookEvent $event */ public function addChildrenToPageTableFieldsHook(HookEvent $event) { $field = $event->object; // on ajax, the first hook has no fieldname if (!$field->name) { return; } // get the edited backend page $editID = $this->wire('input')->get->int('id'); if (!$editID && $this->wire('process') instanceof WirePageEditor) { $editID = $this->wire('process')->getPage()->id; } $page = wire('pages')->get($editID); // disable output formating – without this, the ajax request will not populate the field $page->of(false); // you could also insert a check to only do this with sepcific field names… // $page->set($field->name, $page->children('template=DesiredTemplate')); // just specific templates $page->set($field->name, $page->children); } Now whenever there is a page-table field on your page, it gets populated with the children
    • By pppws
      Hey there,
      i've set up a page wich uses pageTable and it works like a charm.
      for my home page i get several pages. they are sperated in two types:
      a) page has the module 'featured_img'
      b) page doesn't have the 'featured_img'
       
      my pageTable field is called add_modules. so i was wondering if something like 
      <?php foreach ($featured as $child): ?> <?php if ($child->add_modules->module_featuredimg): ?> // show image <?php else: ?> // show text <?php endif; ?> <?php endforeach; ?> is possible?
       
      thanks for your input!
    • By James F Carr
      In the admin, I am trying to access data from a page that contains an inputfieldand autofill that data into the modal edit window for a new entry.
      For instance, I have a template which contains a PageTable field. When I add a new entry to the PageTable, I want to capture the ID from the originating admin page and add it to a field in the edit modal as a way of linking the new entry back to the originating page. The new PageTable entries are NOT children of the originating page, and cannot be for structural reasons. I have attached an image which I hope will help to clarify the basic result I want to achieve.
      Is there a practical means of accomplishing this? I've been able to achieve something similar with the ConnectPageFields module, but it does not work with PageTable fields. Any input would be much appreciated.

    • By alexcapes
      Hi,
      I've noticed when I trash pages from a PageTable field, then restore them, they are restored to their original location, however the connection is broken with the PageTable field.
      Is this expected behaviour? Is there a way for it to maintain this relationship? Otherwise restoring it doesn't actually restore it to it's previous state.
      Note that in this case the parent pages for the PageTable field is not set as the direct parent.
       
       
       
×
×
  • Create New...