Una parola comune è l’opposto di ciò che voglio. Non voglio che i miei risultati di ricerca contengano TUTTI i ticket, voglio un modo per cercare un ticket specifico. Ecco perché l’ID dell’argomento sarebbe ideale. Vengono generati automaticamente e sono univoci.
No, penso che il codice che sto usando fosse originariamente di awesomerobot, ma non riesco più a trovarne la fonte.
Preferisco il posizionamento di ciò che sto usando attualmente rispetto a quel blocco sotto il testo.
Beh, io non posso farlo. Forse tu puoi. «Voce di Liam Neeson»Ho un certo set di abilità. La programmazione non è tra queste.«/Voce di Liam Neeson»
Mi fraintendi. Intendevo avere una parola comune incluso il parametro topic:id, in modo che vengano visualizzati solo i risultati da quell’argomento. La parola comune elimina la necessità di cambiare parole come ‘ciao’ e ‘salve’.
Il pulsante Submit serve per andare all’argomento[2]; non influisce sui risultati della ricerca.
Spero che questo aiuti!
La mia prima volta con FormKit, è davvero fantastico! ↩︎
Non ho potuto cambiare il testo del pulsante, poiché ciò richiederebbe le localizzazioni… che necessiterebbero di un intero repository TC, il che potrebbe essere eccessivo . ↩︎
Grazie @NateDhaliwal, apprezzo lo sforzo.
Ho creato il componente, incollato il codice nella scheda JS. Mi sono assicurato che fosse attivo sul mio tema, ma niente.
Questo è l’aspetto della mia pagina di ricerca:
E penso che sia dovuto al JS per mostrare l’ID dell’argomento, non alla ricerca. Non appare se non nelle pagine che ho contrassegnato per quell’elemento.
Abbiamo una soluzione funzionante. Anche se è leggermente inelegante, soddisferà le mie esigenze fino a quando non potremo cercare l’ID dell’argomento direttamente nella casella di ricerca standard.
Il codice attuale suggerito da @awesomerobot sembra funzionare, ma attiva l’avviso che ho pubblicato sopra.
2a. Quando ho rimosso il codice originale che stavo usando per visualizzare l’ID dell’argomento, questo avviso è scomparso…
Quando scegli una soluzione, il codice per visualizzare l’ID dell’argomento appare sia nel post originale che nella soluzione. C’è un modo per tenerne conto e impedirne la visualizzazione lì?
Ho abbellito un po’ di più il CSS, ora ho una pillola su ogni risposta in ogni thread nelle categorie specificate in cui la sto usando. Suppongo che la risposta sarà di “dis-abbellirla”, ma se qualcuno conosce un altro modo preferirei mantenerla, penso che abbia un bell’aspetto così com’è.
@awesomerobot
Il tuo codice funziona alla grande, ma sembra che qualsiasi decorazione CSS diversa dal testo appaia su ogni post dopo il primo come uno spazio vuoto formattato come dice il CSS.
Disattiva il blocco inline e otterrai una barra colorata a tutta larghezza.
Cambia il colore di sfondo e la pillola cambia colore
ecc…
In base a ciò che hai scritto, sembra che tu abbia detto di mostrarlo solo nel primo post, ma questo influisce solo sul testo. C’è qualcos’altro che possiamo fare per eliminare l’elemento su tutti i post aggiuntivi?
Ok, come ho detto, non sono un programmatore, ma sono bravissimo a fare domande a Grok. Ecco un codice che si occupa di entrambi i problemi.
Niente più bolle CSS vuote nelle risposte dalla 2 alla X.
Niente più duplicazione dell’ID dell’argomento nelle soluzioni citate.
Forse nessun altro sulla Terra ci tiene, ma questo sembra un buon modo per aiutare a tracciare gli argomenti per quelli di noi che usano Discourse come sistema di ticketing.
import { apiInitializer } from "discourse/lib/api";
import Component from "@glimmer/component";
class TopicIdentifier extends Component {
get topicId() {
return this.args.post?.topic?.id;
}
get shouldShow() {
const firstPost = this.args.post?.post_number === 1; // primo post nell'argomento
const desiredCategories = [9, 23]; // un elenco separato da virgole degli ID delle categorie in cui si desidera che questo appaia
const isInCategory = desiredCategories.includes(
this.args.post?.topic.category.id
);
return firstPost && isInCategory;
}
<template>
{{#if this.shouldShow}}
<!-- puoi modificare il contenuto sottostante, {{this.topicId}} è dove verrà riempito l'ID dell'argomento -->
Issue Tracking # is
{{this.topicId}}
<!-- puoi modificare il contenuto soprastante -->
{{/if}}
</template>
}
export default apiInitializer("0.8.40", (api) => {
api.decorateCookedElement((element, helper) => {
```gjs
import { apiInitializer } from "discourse/lib/api";
import Component from "@glimmer/component";
class TopicIdentifier extends Component {
get topicId() {
return this.args.post?.topic?.id;
}
get shouldShow() {
const firstPost = this.args.post?.post_number === 1; // primo post nell'argomento
const desiredCategories = [9, 23]; // un elenco separato da virgole degli ID delle categorie in cui si desidera che questo appaia
const isInCategory = desiredCategories.includes(
this.args.post?.topic.category.id
);
return firstPost && isInCategory;
}
<template>
{{#if this.shouldShow}}
<!-- puoi modificare il contenuto sottostante, {{this.topicId}} è dove verrà riempito l'ID dell'argomento -->
Issue Tracking # is
{{this.topicId}}
<!-- puoi modificare il contenuto soprastante -->
{{/if}}
</template>
}
export default apiInitializer("0.8.40", (api) => {
api.decorateCookedElement((element, helper) => {
// Procedi solo se questo è il primo post e non all'interno di una citazione di soluzione
// Procedi solo se questo è il primo post, non in una citazione, e nella categoria desiderata
const post = helper?.model;
const desiredCategories = [9, 23]; // Corrisponde alle categorie da TopicIdentifier
if (
if (
helper?.model?.post_number !== 1 ||
!post ||
post.post_number !== 1 ||
!desiredCategories.includes(post.topic?.category?.id) || // Controlla la categoria
element.classList.contains("post__contents-cooked-quote") || // Controlla se l'elemento stesso è il contenuto della citazione
element.closest("aside.accepted-answer") || // Controlla il wrapper della soluzione/citazione
element.closest(".quote") // Controllo aggiuntivo per citazioni generiche
) {
return;
}
const wrapper = document.createElement("div");
wrapper.className = "tracking-id";
helper?.renderGlimmer(
wrapper,
<template><TopicIdentifier @post={{helper.model}} /></template>
);
element.appendChild(wrapper);
});
});
Ho trovato un’altra piccola anomalia. Stavo vedendo le bolle di classe vuote nel primo post degli argomenti al di fuori dei 2 in cui li volevo, quindi ho dovuto aggiornare un po’ il codice. Ecco il prodotto finale.
import { apiInitializer } from "discourse/lib/api";
import Component from "@glimmer/component";
class TopicIdentifier extends Component {
get topicId() {
return this.args.post?.topic?.id;
}
get shouldShow() {
const firstPost = this.args.post?.post_number === 1; // primo post nell'argomento
const desiredCategories = [9, 23]; // un elenco separato da virgole di ID di categoria in cui si desidera che questo appaia
const isInCategory = desiredCategories.includes(
this.args.post?.topic.category.id
);
return firstPost && isInCategory;
}
<template>
{{#if this.shouldShow}}
<!-- puoi modificare il contenuto sottostante, {{this.topicId}} è dove verrà inserito l'ID dell'argomento -->
Issue Tracking # is
{{this.topicId}}
<!-- puoi modificare il contenuto sopra -->
{{/if}}
</template>
}
export default apiInitializer("0.8.40", (api) => {
api.decorateCookedElement((element, helper) => {
// Only proceed if this is the first post and not inside a solution quote
// Only proceed if this is the first post, not in a quote, and in the desired category
const post = helper?.model;
const desiredCategories = [9, 23]; // Match the categories from TopicIdentifier
if (
if (
helper?.model?.post_number !== 1 ||
!post ||
post.post_number !== 1 ||
!desiredCategories.includes(post.topic?.category?.id) || // Check category
element.classList.contains("post__contents-cooked-quote") || // Check if the element itself is the quote content
element.closest("aside.accepted-answer") || // Check for solution/quote wrapper
element.closest(".quote") // Additional check for generic quotes
) {
return;
}
const wrapper = document.createElement("div");
wrapper.className = "tracking-id";
helper?.renderGlimmer(
wrapper,
<template><TopicIdentifier @post={{helper.model}} /></template>
);
element.appendChild(wrapper);
});
});
element.classList.contains("post__contents-cooked-quote") || // Check if the element itself is the quote content
element.closest("aside.accepted-answer") || // Check for solution/quote wrapper
element.closest(".quote") // Additional check for generic quotes
) {
return;
}
const wrapper = document.createElement("div");
wrapper.className = "tracking-id";
helper?.renderGlimmer(
wrapper,
<template><TopicIdentifier @post={{helper.model}} /></template>
);
element.appendChild(wrapper);
});
});
E per rispondere alla mia domanda, ho spostato tutto il codice in un nuovo componente del tema e tutto funziona ancora bene.