Skip to main content
2 of 4
EXPLAINING WHY THIS SHOULD NOT BE MARKED OFF-TOPIC

How to scrape specific elements of the Drupal theme to a file?

I DO NOT KNOW WHY THIS IS MARKED OFF-TOPIC IT IS SPECIFICALLY ABOUT DRUPAL, ABOUT A CUSTOM DRUPAL MODULE I AM USING TO GET DOM ELEMENTS OF THE DRUPAL THEME. IT'S NOT SPECIFICALLY ABOUT SIMPLEHTMLDOM SINCE THAT IS WORKING FINE IN ONE INSTANCE BUT FOR SOME REASON NOT WITH A DIFFERENT DRUPAL THEME. ALSO I AM ASKING FOR ANY RECOMMENDATION OF A DIFFERENT APPROACH TO GET THE HTML WITHOUT USING SIMPLEHTMLDOM. PLEASE READ THE QUESTION AGAIN.

I want to save two divs - one with the site header and the other has the main nav menu - to a PHP file that can be used in other (even non-PHP) sites to replace their header and menu using Javascript DOM insertion and CORS with a header on the saved file that allows cross-origin resource sharing.

The idea is to update the distibution code automatically on cron or on demand, when changes in the menu are made, so they will be reflected in the satellite sites.

I have been able to create a working proof-of concept using simplehtmldom on the current version of our site. However, when I tried to adapt it to the new version in dev, using a different theme as a subtheme of Adaptive Theme, then simplehtmldom cannot read the URL properly - it seems that the blocks are missing see https://drupal.org/node/2139613

The divs are not $page regions, although the header-wrapper div contains the $page['header'] region (and the region is invisible to simplehtmldom).

I looked at the Web Widgets module, but that is for content and views - I want to get the theme elements in the header-wrapper and the nav-wrapper, two arbitrary divs at the top of the page.

It's also frustrating that I cannot access the $page array or even the $variables in my module. I had to set the module weight to 1 to be "heavier" than the simplehtmldom module, since there are other modules that require simplehtmldom module (like devel themer) and I don't want to load its library twice. But I tried the latest simplehtmldom library separately, with the same results.

I know there are scraping tools based on node.js but I'm looking for a more lightweight solution. simplehtmldom worked, but in the new site it doesn't