GithubHelp home page GithubHelp logo

renderapi's Introduction

Some proof-of-concept for a Object-Oriented Drupal 9.x RenderAPI

  • ./index.php pretends to build and return a sample renderable.
  • ./fake-drupal is just a dummy Drupal skeleton to give some conceptual basis. In fake-drupal.php, explore un-commenting the lines in: getAlterCallbacks(), getModuleDecoratorClasses(), and getThemeDecoratorClass() to explore how extensibility via Builder and Decorator methods.

Things we need

  • Logical template-based markup that can be extended and overridden.
    • hook_theme(), PHPTemplate (Twig), template_preprocess(), hook suggestions, theme registry
  • Abstracted, alterable structure.
    • Render arrays, hook_node_view(), hook_page_alter()
  • Sensible, accessible, API.
    • theme(), drupal_render(), render()/hide()/show()

Render workflow for D9

  1. Define renderable. $build = new RenderableBuilder('ThemeFoo', array('foo' => $foo));
  2. Alter renderable. $build->set('param', $myParam); $build->setThemeClass('ThemeBar');
  3. Render renderable. $renderable = $build->create(); $renderable instanceOf ThemeBar; A. Prepare/alter vars. $renderable = new BazThemeBarDecorator($renderable); B. Invoke theme engine & template. print (string) $renderable;

Wishlist

"Make it faster. Don't break caching." -- Moshe

Acknowledgements

Big thanks to Mark Sonnabaum for OO reality checks and the the Drupal 8 Twig team.

renderapi's People

Contributors

carlwiedemann avatar

Watchers

Joel Pittet avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.