Jump to content

Hanna Code


ryan

Recommended Posts

Thanks mr-fan and Adrian. In case it's useful for someone, here is how I solved the problem. In fact I did not use Hanna Code in the end but some regex stuff, together with Adrians AdminActions Module (great work btw). I think this way you can convert any type of wordpress shortcuts to cleaner Hanna Code, get rid of not needed attributes or convert shortcuts to HTML.

Example: I wanted to convert this:

[av_image src='https://www.domain.de/link/to/image.jpg' attachment_size='large' align='center' lot_more='attributes'][/av_image]

to a regular img tag. So I used a regular expression like this one:

/\[av_image.*src='([^']*)([^\]]*)\]\[/av_image\]/

to match my shortcodes via the search and replace Action in AdminActions Module and replaced it with something like that:

<img src="$1">

Which leads to an ordinary image Tag. $1 stands for the first group which is the src attribute. With variations of this you can convert nearly everything. But if you're not familiar with regex (like me) it can be very tricky. Database restore feature of AdminActions Module saved me some times ?  For testing and learning I used this tool which helped me a lot in creating the regex Expressions: https://www.phpliveregex.com/

 

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 4 months later...

Hello there.

I am working on a project and decided to try out Hanna Code tags to insert some custom HTML markup. The problem is that the markup includes some PHP variables to be checked and inserted at some spots. If I tell Hanna that the code is HTML, the php is just echoed and not processed. If I set the code as PHP, then my HTML is causing errors (of course).

So is it possible/wise to mix HTML and PHP inside of Hanna Code tags and if yes, how can I achieve that? 

Any examples of how to use HTML & PHP inside a single tag would be great.

Link to comment
Share on other sites

If you set the HC to PHP, you would have to echo your HTML of course, or concatenate and then echo it.

<?php

$out .= '<div class="seo-block seo-interviews">';
$out .= "<h2>{$heading}</h2>";
$out .= '<ul>';
foreach( $interviews as $one ){
  $out .= "<li>
   // ...
  </li>";
}
$out .= '</ul>';
$out .= '</div>';
echo $out;

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Hey @Klenkes I always get lazy which was the reason to search for a way to include only the PHP particles in my HTML. I came to the same conclusion as your suggestion, however, this morning. Thank you for it. I guess that for a big chunk of markup the mix of HTML and PHP would not make it read-friendly so I will bang it with PHP.

Link to comment
Share on other sites

Thanks @LostKobrakai I will try both suggestions and see which one would be easier for me, fit better and most important, would be good to read. It might be a bit harder to turn the entire code to pure PHP due to the fact that there will be lots of html code to assign to $out and to align it, however I might not worry about it as I am planning to minify pages anyway. The more I touch HC, the more ways I see to use it where some user intervention is required but no manual file editing is a good idea.

P.S. I tested @LostKobrakai suggestion and can confirm that it works 100% with escaping the PHP tag at the beginning and then adding the HTML code. In my scenario there would be lots of interactions with the HC parameters which would be a part of a few selectors so it would make more sense to have them in PHP. At least if anyone is looking for HTML and PHP mix inside a Hanna Code tags, they could use either approach.

Edited by MilenKo
Tested the @LostKobrakai suggestion and confirmed it is working
  • Like 1
Link to comment
Share on other sites

Just to mention for anyone coming across an issue using Hanna code blocks and having a <p>&nbsp;</p> which might mess up with the markup - it is not related to the module in any case but to the configuration of the field. I am not going to go to many details as there are quite a few topics that I've seen discussing it on other matters, so you could just find the best settings by changing the Text formatters, Content type and Beautify Markup Toggles (in my scenario, I removed empty paragraph tags and removed also non-breaking spaces.

Link to comment
Share on other sites

Hey all. While playing with Hanna Code module I need to set some attributes to not be allowed to be empty (category name or some page listing counts). I know that in the markup I can check for those, however I would like to know is there any way to set the status of the attributes from the HC admin and eliminate the need of adding extra checks for that?

What I am trying to achieve is to have a custom tag inserting a block with page listings from different categories. Then I assign the list of the categories to an array to place them in the markup so I would like to restrict empty values from the attributes options shown in Hanna Dialogues.

P.S. In some cases some values defined in the attributes might be needed to be validated before they are submitted to the tag call for further verification (some numbers needing to be null, not null, bigger/smaller than..., required etc.) So far I was able to set the attributes I need, however the question is how can I achieve some initial validation before they values are passed to the module for processing (during submission or during save).

Link to comment
Share on other sites

@MilenKo, just a quick note that I've merged your thread into the existing Hanna Code module support thread.

When you have questions regarding an existing module, please post them to the dedicated support thread (if one is available – you can find a link to the support thread from the Modules Directory entry for the module in question). Modules/Plugins area of the forum is intended for module-specific support threads, and there should be only one thread for each module. Thanks! ?

Link to comment
Share on other sites

@teppo no problem. That is usually what I do but maybe I've over drank the coffee and got too much coding that day ? 

P.S. I kind of completted my task by adding some checks in the code but it would be useful to know if I can add some checks before submitting the values of parameters to Hanna Code. Maybe I should check with @Robin S as he is the developer of HC Dialogues and it seems like the module addition could be easier to manupulate.

 

 

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Can I use Hanna Code in any field? Even a page title, or the title of a repeater? 

I have a site where someone wants to replace a snippet of text with an image wherever it appears, body, title, other text fields etc. - thinking this might be suitable.

Link to comment
Share on other sites

5 hours ago, cjx2240 said:

Can I use Hanna Code in any field? Even a page title, or the title of a repeater? 

I have a site where someone wants to replace a snippet of text with an image wherever it appears, body, title, other text fields etc. - thinking this might be suitable.

You should be able to.  Just assign the Hannacode Textformatter to the fields of your choice and it should work.

  • Like 1
Link to comment
Share on other sites

18 hours ago, cjx2240 said:

Can I use Hanna Code in any field? Even a page title, or the title of a repeater? 

If you can add it on the Details tab as a Text Formatter, then it should work. Have you tried it? ?

Link to comment
Share on other sites

1 hour ago, szabesz said:

If you can add it on the Details tab as a Text Formatter, then it should work. Have you tried it? ?

I have, now! It worked a treat. The only consideration was that my title field was also being used to populate the <title> tag so I had to be a bit smarter, retain the original text that was being replaced in Hanna Code's replacement and strip tags in the page title.

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

I hope someone can help me with the issue I'm facing when using Hanna Code.

I've installed Hanna Code using the instructions and I've made a couple of Hanna Code's. For example: one HTML Hanna Code with an image, so that I can easily show the same image on different pages within the content, so I also can change it easily.

But right now, the results of the codes just doesn't show. Hanna Code shows them when I view the Hanna Code's preview, but the shortcode ( the [[name here]] codes) don't turn into something else. I've an example here: https://smartranking.nl/blog/oude-berichten-weer-hoger-in-google-laten-verschijnen/.

The shortcut remains "[[cta-seo-consult]]".

Is anyone known with this problem? How can I fix it? I hope someone can give me the solution for it. I already tried different text formatting, but that also doesn't help.

Link to comment
Share on other sites

23 minutes ago, jarik said:

I hope someone can help me with the issue I'm facing when using Hanna Code.

Welcome to the forums @jarik

Make sure you've enabled Hanna Code as a text formatter for the textarea field where you want it to work. I am in a bit of a hurry. Have a look at the settings of your textarea field (details tab). 

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

51 minutes ago, kongondo said:

Welcome to the forums @jarik

Make sure you've enabled Hanna Code as a text formatter for the textarea field where you want it to work. I am in a bit of a hurry. Have a look at the settings of your textarea field (details tab). 

Here is an example of enabling Hanna Code on a textarea field (this one is called body):

hanna-code-texformatter1.thumb.png.ee8d25b336cfec6685741386f50cb1ba.png

 

  • Like 1
Link to comment
Share on other sites

  • 4 months later...

Hello gents.

I've been experimenting a lot lately with Hanna Code and Hanna dialogue which lead me to a full "News Block" code that can be inserted easily using CKEditor. My idea was to build a few similar news blocks and allow the admin to select the categories (represented by pages) for every block tabs etc.

Attached is a screen cast of what I have so far and it is working perfectly fine and as expected.

As usual, there is one HOWEVER ? After some experimenting and adding few news pages (in my case as it is obvious some recipes), I was glad to see it all happening. The problem came, when I tried to insert the same Hanna Code block with the idea to show some different categories. What has happened is that the second block tabs came empty, but clicking on them started changing the navigation of the first one. From my humble experience with PHP I would guess that since Hanna code is using the same attributes, it affects the appearance of any other than the first block. So has any one ever came to a similar use and have found a solution that would allow to have multiple blocks inserted without an overlapping of the code of every one?

I am thinking about experimenting with inserting a random number after the block name which would be used for the tab number and tab content, however am not sure if there is a simpler or more elegant solution that I am missing yet...

Maybe it is important to mention that I am trying to accomplish a page builder using Hanna Code and Dialogue to allow selection of pages, add some limitations etc.

 

Spoiler

Screencast.gif

 

Link to comment
Share on other sites

Nevermind, looking at the code, I found the answer - every time I called the hanna code, the tabs were having identical names, so this was causing the issue. To fix it I've added a simple random string to the tab names and it is all working fine now.

 

	$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	$rand = substr(str_shuffle($permitted_chars), 0, 10);

	$tab_name = "Tab" . $count . "-" . $rand;

This gives me an alphanumeric string of 10 chars length which aims to avoid a chance of duplicating again the tab names. I know it might be an overkil, but just don't want to take the risk of generating random number and have them matching ? As of now, the tab ID is something like: #Tab1-wrf7te0Y2x

Link to comment
Share on other sites

  • 4 months later...

Looking to use Hanna code with ProFields Table. Textformatter is not parsing the Hanna snippet. Can anyone give me the correct name of the formatter option since it needs to be manually added instead of selecting the TextFormatter option from the dropdown. 

 

Link to comment
Share on other sites

  • 1 month later...

I use Hanna Code quite a lot, and especially with @Robin S's excellent dialog module. However, one thing I find a bit irritating is when you have lots of codes with php; the number of clicks to edit the php plus then needing to update the database (assuming you do this on a test version  before implementing live) is quite time consuming, often for quite trivial changes.

So: I am looking at re-engineering my codes along the following lines. Each code which needs php will just have the same code - something like

<?php
$result = hannaCode($input, $attr, $page, $hanna->name, $hanna->field, $hanna->value);
if (in_array('text', $result)) $hanna->value = $result['text'];
echo $result['out'];

Then, in a separate php file (probably "include"d  in init.php) I have a function 

hannaCode($input, $attr, $page, $hannaName, $hannaField, $hannaText)

with a switch on $hannaName to execute the code for that name.

This has 2 benefits:

  1. Any common code can go at the top, before the switch. E.g. I have 
    if ($page->template == 'admin') {
            $pId = $input->get('id');
            $page = wire('pages')->get($pId);
        }
        $helpArray = [
            'Property' => '[[Property]]: The name/title of the property (choose system name or title). Only works on a Booking page and its Mailing children',
    ..etc...
        ];
        if ($page->template == 'help-doc') {
            return ['out' => $helpArray[$hannaName]];
        }
    switch ...

     

  2. I can do simple edits in the IDE, test and upload without having to touch the database.

Has anyone else tried this. Any thoughts? Is it even worth a tut?

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
×
×
  • Create New...