mr-fan Posted October 26, 2015 Share Posted October 26, 2015 I will share a little texformatter from a actual project for a client. In my former CMS i had an easy addon where i could preset terms like in a glossary that will replaced in the Wysiwyg fields on every page. So there are solutions that i know but the all work not that easy like my former used addon. The title of the glossary_item is used for the termsearch. This textformatter search for terms in ||termexample|| or ||example term|| and replace them complete. If a term was in ||pipes|| and there was no hit in the glossary entries the pipes will deleted from the term and only the clean value will returned. So no room for wrong user entries like if i used HannCode or something else. This is great for abbreviations, external- and internal links and could extended for every possible replacement that makes sense like footnotes and so on. I like the pages concept for content and so i use pages for glossary and simple replacement where a user wanna have it. No autolinking without control, easy use pipes on abbreviations and links and it simple works. Some explanations from the Github Readme: Setup You have to use a pagestructure for the glossary items holder Page for entries template "glossary" glossary items template "glossary_item" The type of a glossary item could be a abbreviation, a external or internal link. Everything you need could added to the textformatter like more complex stuff, footnotes or other replacements. Why? There are working solutions like the great module from Ryan Cramer Autolink in the Profields https://processwire.com/api/modules/profields/autolinks/ But here Users don't could setup easy the terms to replace - this is only ment for webmasters or admins. There are a module for abbreviations from sunlix https://processwire.com/talk/topic/7467-module-processabbreviate/ But here i only have options for abbreviations and i couln't easy add stuff or replacments i need. Links Github: https://github.com/mr-fan/TextformatterGlossary Example Templates for Import: https://github.com/mr-fan/TextformatterGlossary/blob/master/template-examples.json Best regards mr-fan 10 Link to comment Share on other sites More sharing options...
Robin S Posted October 28, 2015 Share Posted October 28, 2015 Great idea! If I understand correctly, the module looks for a glossary page with a title that matches the text between the pipe delimiters. I'm wondering about cases where the term in the textarea needs to be slightly different than the glossary page title, for instance if you need to use a plural form of term. Say I have a glossary page for "mouse" but in my textarea I need to say "mice" - could a variation like that still be linked to the glossary item? Perhaps introduce some syntax to manually specify the glossary term for such cases? Link to comment Share on other sites More sharing options...
mr-fan Posted October 29, 2015 Author Share Posted October 29, 2015 This could be solved in two ways. 1. create a second term 2. add a field for "plural" and change the textformatter to search in "title" and "plural" field... would work. But from my experience you will need specific terms on specific words like ||PW|| or ||contact|| as Link and for abbreviation you have fix terms, too. regards mr-fan Link to comment Share on other sites More sharing options...
mel47 Posted July 29, 2016 Share Posted July 29, 2016 Hi @mr-fan Your module sounds to be exactly what I'm looking for . Unfortunately, I'm not sure I understand what to do. I tried to import your example template but ran many errors (see screenshot). I'm using PW 3.0.24. Do I can just create a "page_link" field in the glossary_term template (since I will just use this one)? Do I need something else particular? Can I add another field like summary to have a more longer text? Also, if want to output the list of all terms on the glossary page, I just used the template/field as we normally do? Thanks Mel Link to comment Share on other sites More sharing options...
mr-fan Posted July 29, 2016 Author Share Posted July 29, 2016 Oh i forgot the used fields you need...a headline field, a page select and a url field for internal and external links - so give this import file a try: https://github.com/mr-fan/TextformatterGlossary/blob/master/fields-example.json the whole system is very flexible since we use pages. for now there 3 different types of the glossary there that will be replaced if you look at the code it is very simple to know whats going on behind: //set the replacement depending from the item type switch ($entry->glossary_type) { case '1': //abbr $replacement = '<abbr title="' . $entry->headline . '">' . $term . '</abbr>'; break; case '2': //external link $replacement = '<a rel="help" target="blank" href="' . $entry->extern_link . '" data-original-title="' . $entry->headline . '"><span class="fa-globe" aria-hidden="true"></span> ' . $term . '</a>'; break; case '3': //internal link //internal link need to get the url $internLink = wire('pages')->get("$entry->page_link"); $replacement = '<a rel="help" href="' . $internLink->url . '" data-original-title="' . $entry->headline . '">' . $term . '</a>'; break; default: $replacement = $term; } it yould be possible to upscale the textformatter to use for footnotes, remarks or something else...;) regards mr-fan Link to comment Share on other sites More sharing options...
mel47 Posted August 1, 2016 Share Posted August 1, 2016 Hi, I progress! I created the fields. It seems to have to have a little inconsistency between "glossar" and "glossary" but I thinks everything is fine now. But it doesn't seems to works. If I understand correctly, if the term is not created, it should at least remove the ||. But even if the glossary_item "test" exists, nothing seems to happen. Do you have an idea of what going wrong? Thanks PS Evidently, module is correctly installed, there is no error. I'm using PW 3.0.28 Link to comment Share on other sites More sharing options...
mr-fan Posted August 1, 2016 Author Share Posted August 1, 2016 Hmm all looks good so far. One question - have you set the Textformatter on the field you wanna use this? 2 Link to comment Share on other sites More sharing options...
mel47 Posted August 2, 2016 Share Posted August 2, 2016 oh my... Still have so much thing to learn... Thanks it works now. 1 Link to comment Share on other sites More sharing options...
Robin S Posted August 8, 2016 Share Posted August 8, 2016 On 27/10/2015 at 4:02 AM, mr-fan said: I like the pages concept for content and so i use pages for glossary and simple replacement where a user wanna have it. No autolinking without control, easy use pipes on abbreviations and links and it simple works. I get the reason for having manual control of where links/abbreviations appear, but what do you think about adding an option where terms are replaced automatically? It would be nice to give the user the ability to add new terms to the glossary without having to go through all their pages looking for where the term appears and adding the ||term|| syntax manually. Link to comment Share on other sites More sharing options...
mr-fan Posted August 8, 2016 Author Share Posted August 8, 2016 For this proposal Ryan build a great module that works really good: https://processwire.com/api/modules/profields/autolinks/ From my point of view Ryan is right on his choice to let only admins set the terms if an automatic is running... The mixture of user defined terms and automatic replacement could be very dangerous. But you could simple fork and change the module and switch from the ||regex|| to a exact search for the terms and replace them automagical.....since i'm a "second hand" webdev + living on a farm in south germany = summertime is some harvest and less time for the desk best regards mr-fan 2 Link to comment Share on other sites More sharing options...
mel47 Posted October 28, 2020 Share Posted October 28, 2020 Hi, I just wanted to update to 3.0.168 (from 3.0.156). I get this error. I'm not enough into core's code to know if the problem is related to the module or the core. I also found this issue that seems similar. Thanks! Mel Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now