Jump to content

Recommended Posts

Hey, I'm new and I created a simple module for tagging pages because I didn't found a module for it (sadly this is not a core feature). This module is licensed under the GPL3 and cames with absolutly no warranty at all. You should test the module before using it in production environments. Currently it's an alpha release. if you like the module or have ideas for improvements feel free to post a comment. Currently this fieldtype is only compatible with the Inputfield I've created to because I haven't found  an Inputfield yet, that returns arrays from a single html input.

Greetings Sebi2020

FieldtypeTags.zip.asc

InputfieldTagify.zip

InputfieldTagify.zip.asc

FieldtypeTags.zip

  • Like 5
Link to comment
Share on other sites

@Robin S Thank you for your feedback. In fact I planned to add this features in the next release. I also planned to add autocomplete suggestions based on the already existing tags. 

@Sergio My intention was to store tags in page fields instead of creating a page for every tag you add. By doing so you only need one page/template whcih displays all pages with a given tag. As far as I know the philosophy behind ProcessWire is "Everything is a page" but I don't like to clutter my tree with a page for every tag and in my opinion it's very time consuming to create a page for every tag. 

@flydev Thanks!

Currently I don't know the API very well so I don't know if there is a way to fetch all entries of a given field and not just for the current page.  I would prefer to use the API instead of using the DatabasePDO class.

 

Edited by Sebi2020
Link to comment
Share on other sites

43 minutes ago, Sebi2020 said:

in my opinion it's very time consuming to create a page for every tag.

Lots of solutions for this from a simple API foreach, to the Batch Child Editor module or even this http://modules.processwire.com/modules/admin-actions-unordered-list-to-pages/

Everyone baulks at the everything is a page at first, but the benefits become apparent and it's actually very elegant and more importantly very flexible if you need to change things down the road.

Not saying there isn't a place for what you have built - just say that there are multiple way to skin a cat ?

  • Like 2
Link to comment
Share on other sites

Most of the page fields (like autocomplete) allow creating new pages on the fly, while editing the actual article page. 

But I totally see place for modules like this (they are always faster to configure for example). 

  • Like 1
Link to comment
Share on other sites

I just released version 2 of InputfieldTagify:

You can download the zip file from Github:
https://github.com/Sebi2020/InputfieldTagify/releases/tag/v0.0.2

@Robin S

It now supports configuration of predefined whitelist entries (in this case auto-suggestions) and allows you to enable additional delimiters like spaces and semicolons. I plan to include a option for specifying limits on tags in the next release.

Greetings Sebi2020

  • Like 3
Link to comment
Share on other sites

I've just released a new pre-release of FieldtypeTags and InputfieldTagify

New features include:

  • FieldtypeTags
    • Retrieval of all tags:
      $this('modules')->get('FieldtypeTags')->getAllTags();

       

    • Retrieval of all pages for a specific tag: 
      $this('modules')->get('FieldtypeTags')->getPagesByTag("tagname");

       

  • InputfieldTagify
    • Specification of tag limits

Downloads:
FieldtypeTags v0.1.0-pre: https://github.com/Sebi2020/FieldtypeTags/releases/tag/v0.1.0-pre
InputfieldTagify v0.1.0-pre: https://github.com/Sebi2020/InputfieldTagify/releases/tag/v0.1.0-pre 

Greetings Sebi2020

P.S:  Comments appreciated

Edited by Sebi2020
  • Like 1
Link to comment
Share on other sites

Thanks for the updates!

I spotted a few little issues in InputfieldTagify...

There are quotes missing around version, autoload and singular in getModuleInfo(): https://github.com/Sebi2020/InputfieldTagify/blob/354acf86ac88baa8c257523cd093ec202c573fe0/InputfieldTagify.module#L18-L20

PHP gives a warning that InputfieldTagify::renderReady() and InputfieldTagify::___processInput() should be compatible with the methods of the Inputfield class that the module extends.

So for renderReady() I think you want:

public function renderReady(Inputfield $parent = null, $renderValueMode = false) {
	$this->addClass("tagify-input");
	return parent::renderReady($parent, $renderValueMode);
}

And for ___processInput():

public function ___processInput(WireInputData $input) {
    //...

 

  • Like 1
Link to comment
Share on other sites

Thank you for your reply!

2 hours ago, Robin S said:

Thanks for the updates!

I spotted a few little issues in InputfieldTagify...

There are quotes missing around version, autoload and singular in getModuleInfo(): https://github.com/Sebi2020/InputfieldTagify/blob/354acf86ac88baa8c257523cd093ec202c573fe0/InputfieldTagify.module#L18-L20P

Why do you think there must be quotes? ProcessWire  is happy with booleans and integers. Even the core-modules are written in the same way:

		return array(
			'title' => 'Text',
			'version' => 100,
			'summary' => 'Field that stores a single line of text',
			'permanent' => true, 
			);

from wire/modules/Fieldtype/FieldtypeText.module

2 hours ago, Robin S said:

So for renderReady() I think you want:


public function renderReady(Inputfield $parent = null, $renderValueMode = false) {
	$this->addClass("tagify-input");
	return parent::renderReady($parent, $renderValueMode);
}

And for ___processInput():


public function ___processInput(WireInputData $input) {
    //...

 

When do you get this warnings? I cannot reproduce that (with E_ALL enabled in php.ini). 

Which PHP Version did you use? With my Version 7.0.28 everything seems to be fine.

 

Greetings Sebi2020

Link to comment
Share on other sites

6 minutes ago, Sebi2020 said:

Why do you think there must be quotes? ProcessWire  is happy with booleans and integers. Even the core-modules are written in the same way:


		return array(
			'title' => 'Text',
			'version' => 100,
			'summary' => 'Field that stores a single line of text',
			'permanent' => true, 
			);

from wire/modules/Fieldtype/FieldtypeText.module

I'm talking about the array keys, not the values. If you use a string as an array key the string has to be in quotes or else it is interpreted as a constant. In the FieldtypeText example you show the keys are correctly within quotes.

8 minutes ago, Sebi2020 said:

When do you get this warnings? I cannot reproduce that (with E_ALL enabled in php.ini)

I recommend installing Tracy Debugger - it is good at picking up errors that can otherwise be missed.

2019-02-09_205346.png.4d3a3d166798714cffb86538e3055199.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...