Estoy intentando crear un plugin que cambie la cabecera por algo así
No importa mucho cómo se vea, lo importante es que no quiero usar la personalización en la ruta
/admin/customize/css_html. Quiero crear un plugin que cambie mágicamente todo lo que necesito.
Lo que he encontrado hasta ahora es que no hay una plantilla para la cabecera; se renderiza mediante virtual-dom.
El proceso de renderizado es el siguiente:
-
La plantilla
assets/javascripts/discourse/templates/application.hbs, que puede ser sobrescrita, renderiza el componentesite-header.{{plugin-outlet “above-site-header”}}
{{site-header canSignUp=canSignUp
showCreateAccount=“showCreateAccount”
showLogin=“showLogin”
showKeyboard=“showKeyboardShortcutsHelp”
toggleMobileView=“toggleMobileView”
toggleAnonymous=“toggleAnonymous”
logout=“logout”}}
{{plugin-outlet “below-site-header”}} -
El componente
assets/javascripts/discourse/components/site-header.js.es6extiende y devuelve el widgetheader.const SiteHeaderComponent = MountWidget.extend(Docking, {
widget: ‘header’,
..
});export default SiteHeaderComponent;
-
El widget
assets/javascripts/discourse/widgets/header.js.es6genera el virtual-dom para la cabecera.export default createWidget(‘header’, {
tagName: ‘header.d-header.clearfix’,html(attrs, state) {}
});
Mis ideas
Puedo crear mi propio widget my-header que extienda el header existente; allí solo actualizaré el html. No quiero copiar y pegar nada en él, solo quiero sobrescribir el método html().
/plugins/discourse-foo/assets/javascripts/discourse/widgets/my-header.js.es6
Luego puedo crear mi propio componente my-site-header que extienda el site-header existente, simplemente sobrescribiéndolo para que apunte al widget my-header.
/plugins/discourse-foo/assets/javascripts/discourse/components/my-site-header.js.es6
Después, sobrescribo la plantilla application para mostrar el componente my-site-header en lugar de site-header.
/plugins/discourse-foo/assets/javascripts/discourse/templates/application.hbs
{{plugin-outlet "above-site-header"}}
{{my-site-header canSignUp=canSignUp
showCreateAccount="showCreateAccount"
showLogin="showLogin"
showKeyboard="showKeyboardShortcutsHelp"
toggleMobileView="toggleMobileView"
toggleAnonymous="toggleAnonymous"
logout="logout"}}
{{plugin-outlet "below-site-header"}}
La pregunta es: ¿cómo puedo extender todos estos componentes y widgets? ¿Podrías indicarme la forma correcta de hacerlo? Gracias.
