Embora eu provavelmente esteja a duas semanas de lançar meu primeiro site Discourse (uma substituição para uma lista de e-mail que gerencio há 30 anos), já estou pensando em outro projeto possível, que é mover meu site de blog de culinária/panificação do Wordpress/BBPress para o Discourse.
Para fazer isso, preciso de uma maneira de reconhecer receitas e alterar como elas são formatadas e impressas.
Parece que as tags de tópico são o caminho a seguir em termos de marcar um novo tópico como tendo uma receita na postagem principal (as respostas seriam comentários, não receitas completas), mas não parece haver uma maneira de forçar uma tag (ou seja, ‘receita’) no campo de tag. Também estou pensando em usar o campo de tag para indicar o tipo de receita (pão, sobremesa, carne, etc.) para que uma receita possa ter várias tags, como: receita sobremesa.
A impressão é uma questão separada, já decidi que para isso funcionar precisarei criar um plugin que dê ao Discourse maior controle sobre a impressão de posts selecionados de um tópico. Formatar uma postagem (principal) marcada como receita para impressão é provavelmente uma segunda tarefa. Provavelmente estou a vários meses de distância de saber Ruby suficiente para sequer pensar em abordar isso.
Mas isso já é o suficiente de lista de desejos, minha pergunta AGORA é, posso forçar um novo tópico em uma categoria (por exemplo, receitas) a ter uma tag pré-inserida (por exemplo, receita) para que o usuário não precise selecioná-la e não possa excluí-la?
Não tenho certeza sobre o seu caso de uso específico, mas pode ser redundante forçar a mesma tag em todos os tópicos de uma categoria.
Embora você não possa pré-preencher uma tag em uma categoria usando as configurações existentes, é possível conseguir isso por meio de um componente de tema ou um plugin.
Sem personalização adicional, existem algumas opções que podem funcionar para o seu caso:
Defina a configuração Número mínimo de tags exigidas em um tópico: na categoria e adicione um grupo de tags obrigatórias à categoria.
Dessa forma, você pode configurar várias tags para a categoria, como pão, sobremesa, carne, etc. — os usuários não poderão postar sem escolher pelo menos 1 (ou mais) tags.
Configure a marcação automática com base em uma palavra ou frase que aparece comumente em receitas. Você pode fazer isso em admin/customize/watched_words.
Essa abordagem pode exigir algumas tentativas e erros e pode não ser perfeita. Se você estiver nos EUA, isso é um pouco mais fácil, pois o sistema imperial tem medidas exclusivas. A maioria das receitas provavelmente mencionaria tsp ou tbsp, por exemplo. Outras frases que vêm à mente, que seriam bastante exclusivas para receitas, podem incluir preheat, mixing bowl, saute e assim por diante.
Eu preferiria ter um campo separado em uma postagem que dissesse ‘isto é uma receita, formate de acordo’, para que as tags pudessem ser usadas para outros fins mais voltados para o usuário, como ambos ilustramos, mas ainda não tenho certeza de como fazer isso. Sei que existem maneiras de ter campos de postagem personalizados e campos de tópico personalizados, mas ainda estou aprendendo como acessá-los ou utilizá-los.
Embora eu pense que, principalmente, a postagem principal em um tópico seria marcada para formatação de receita, isso poderia concebivelmente se aplicar a outros lugares. Além disso, pode haver outros casos de uso para sinalizar uma postagem para formatação especial além do meu blog de culinária, onde uma postagem sinalizada não é necessariamente a postagem principal em um tópico ou em qualquer categoria específica. E generalizar a abordagem pode ter utilidade mais ampla.
Os detalhes da formulação da receita são outra questão complicada, idealmente eu gostaria de um formato estruturado para poder isolar campos para o ingrediente, a unidade de medida especificada e a quantidade, preferencialmente de uma forma que me permitisse utilizar outros bancos de dados de informações nutricionais de ingredientes, preços, inventário, etc. O rendimento total também permitiria que uma receita fosse ampliada ou reduzida. Alguns outros sites de culinária fazem isso, mas acho que eles estão perdendo recursos que sei que gostaria, e a comunidade de confeitaria também. Se tudo isso pode ser feito de uma forma compatível com a estrutura de dados do Discourse é uma questão separada. (Mas minha primeira impressão é que pode ser mais fácil fazer isso no Discourse do que no WordPress ou como um sistema autônomo do zero, você já construiu muitas das estruturas de suporte.)
Você poderia usar um TopicCustomField em um plugin, mas um conjunto de tags exclusivo para a equipe, ou um que seja aplicado a todos os usuários, seria mais fácil de manter. Além disso, você poderia simplesmente fazer com que um conjunto de categorias fossem receitas, para que você pudesse aplicar essa formatação a toda a categoria? Essa parece ser a solução mais fácil para “quais tópicos são receitas”.
Isso funcionaria para o meu caso de uso específico, mas estou pensando adiante em um plugin que teria um valor mais geral. Qual faz mais sentido:
Quero que esta categoria tenha formatação especial separada
Quero que este tópico tenha formatação especial separada
Quero que esta postagem tenha formatação especial separada
Alguma combinação do acima, por exemplo, esta categoria pode utilizar formatação especial em alguns de seus tópicos e/ou postagens, ou este tópico pode utilizar formatação especial em algumas de suas postagens
Tenho certeza de que não sei o suficiente sobre Discourse/Ruby para fazer muita coisa ainda, muito menos fazer da maneira CERTA, então talvez trabalhar no meu caso de uso específico seria um bom ponto de partida para mim. Mas historicamente, nos projetos em que trabalhei nos últimos 40 anos, uma vez que alguém tem uma maneira simplificada de fazer algo, fica menos interessado em uma abordagem mais generalizada.
Não é exatamente o que eu estava procurando, mas acho que você estará melhor resolvendo seu problema real do que os que imagina.
Essa será difícil, embora você possa criar um plugin que adicione um PostCustomField e o adicione ao serializador.
Apenas decidir que você terá categorias que contêm apenas receitas/precisam de formatação especial resolve a grande maioria dos casos de uso. Impor um conjunto de tags é outra maneira um pouco mais complicada, mas também envolve praticamente nenhum código para manter.
Agradeço suas sugestões e orientações. Novatos são uma dor de cabeça, não é mesmo? (Como disse em outra postagem em outro tópico, ainda não sei o que não sei.)
Minha abordagem à análise de sistemas ao longo dos anos tem sido tentar antecipar o máximo de coisas possível ao iniciar a lista de desejos e, em seguida, ver quantas delas decido que não preciso ou não sei como fazer. Essa abordagem funcionou bem para mim.
O único problema que encontrei ao usar tags para isso é que alguém pode aplicar essa tag a um tópico onde ela não pertence. Claro, se eu disser “a tag de formatação só se aplica quando essa tag está em um tópico na categoria X”, isso pode ser suficiente para mim.
E ocorreu-me que, se a tag de formatação for opcional, os usuários poderiam criar tópicos nessa categoria que não recebem formatação especial. Ainda não decidi se isso é bom ou ruim.