Jump to content

How to allow an id in CKEditor?


Christophe
 Share

Recommended Posts

Hello,

How can we allow an id in CKEditor?

*(class) works for classes.

*[id] should work for ids normally, but apparently it doesn't.

I have already had this problem before, and have tried to find an answer, the only difference being that this time I'm posting a message.

Link to comment
Share on other sites

Hello cstevensjr,

For some websites, I would like to be able to allow an id.

For example, I have to use class="credit" because I can't use id="credit" apparently.

But an id would be more appropriate in this case, and in other cases as well.

It's related to (the) styling (of) a paragraph containing a link to my website.

The information is in a hidden "footer" page.

I've tried replacing *(credit) for the class with *[credit] for the id.

Admin >Setup >Fields > Edit Field: body -> Input -> Extra Allowed Content:

*(centre)
*(gras)
*(noir)
*(credit)

Link to comment
Share on other sites

I don't know if you read the documentation for "Allowed Content Rules", but there it states that [] are for attributes, {} for styles and () for classes. Therefore you need to use *[id] to allow id's. You can only allow/disallow specific contents for the style and class attribute. All the other attributes (including id) are either allowed in any form or not.

Edit: Your version would allow for this:

<a centre="something" gras="green" noir="dark" credit="given">I'm a link</a>
  • Like 4
Link to comment
Share on other sites

Hi,

In this case, in a production website:

*(centre) is active with class="centre"
*(gras) is active with class="gras" <- bold
*(noir) is active with class="noir" <- black
*(credit) is active with class="credit"

I would just like to be able to allow id="credit" instead of a class.

As I've said, I've tried to use *[credit]. It doesn't seem to be the way to do it (perhaps just by default in ProcessWire).

Link to comment
Share on other sites

I think you didn't understand what I tried to describe. HTML attributes are two parts: attribute="value". You can only allow predefined values for classes and styles ( with () and {}). You cannot do that for other attributes, like in your case id. You can only allow the whole attribute without restricting the value. *[id] (id in literally these two characters, not as replacement) does allow id's for any element and any actual id value. Kinda like this: <* id="*"></*>

  • Like 1
Link to comment
Share on other sites

All the other attributes (including id) are either allowed in any form or not.

I would like to add that this is true for allowed content rules in string format. If object definitions are used, there are more possibilities. For example, a function can be called which allows only a match of certain values for id.

Link to comment
Share on other sites

In fact, I had understood at first.

But then I had thought that I hadn't understood with:

"Edit: Your version would allow for this:

<a centre="something" gras="green" noir="dark" credit="given">I'm a link</a>"

I had read (more than once perhaps) the following part too quickly:

"// Rules allowing:
// * <p> and <h1> elements with an optional "id" attribute,
// * <a> with a required "href" attribute and an optional "id" attribute.
p h1; a[!href]; *[id]"

I wanted to only allow one id, not all (via the backend). So it's probably why I haven't tried the *[id].
Apparently it's not possible.

Edit: at least this time, I will just insert the part of the code with the id in the appropriate template file.

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...