Changes to Phile Core
docs/philecorechanges
<!-- Title: Changes to Phile Core Date: 2014-03-05 chapter: 0.2 comments: false --> This page tracks the various small tweaks I made to the phile core. See the referenced page for more information or to make comments. ## System Config/DEFINE See [One Phile Multiple Sites](install.shared.core). I wanted to use a shared system folder for multiple sites. Files changed: * index.php ## Proper link URLS * don't use the base tag from the head section of the templates * use base_url explicitely in templates. i.e. ~~~~ <li><a href="{{ base_url }}/{{ page.url }}">{{ page.title }}</a></li> ~~~~ Files changed: * theme files *.html This is somewhat related to the [problem of subfolder links](plugins/plugin.jaccms) links in markdown on an index or excerpt pages. ## The Request URI Phile does not let you change the request_uri. Pico does let you change it. Ability to change it resolves some issues and gives plugins more flexibility. I needed several virtual pages. In any case I changeded these lines in `Core.php` method `initializeCurrentPage() `. ~~~~ * @triggerEvent request_uri this event is triggered after the request uri is detected. * */ //jacmgr:: need to be able to change uri in plugin //Event::triggerEvent('request_uri', array('uri' => $uri)); Event::triggerEvent('request_uri', array('uri' => &$uri)); ~~~~ Files changed: * Core.php ## The Page Model I've made 3 changes in the Page model. ### 1) Added some getters See the [blog post](%base_url%/posts/getpagestweak2). Files Changed: * Lib\Phile\Model\Page.php I needed to get the full raw text content un-parsed. There were no getters in the page model for that. I added the following getters, `getContentRaw()` and `getRawData()`. ### 2) Added a setter for Meta See the [blog post](%base_url%/posts/getpagestweak3). I needed to be able to set meta data into a page. There were no setters in the page model for that. These are the setters and getters I added. ~~~~ /** * Page Model JACMGR ADDITIONS * by jacmgr */ //jacmgr: set some meta public function setMeta($key, $value) { $this->meta->set($key, $value); } //jacmgr: Get the Content section of file without parsing public function getContentRaw() { return $this->content; } //jacmgr: Get the full page content public function getRawData() { return $this->rawData; } //SETTERS public function setRawData($content) { $this->rawData = $content; } public function setUrl($newUrl) { $this->url = $newUrl; } ~~~~ ### 3) Need to adjust the before_parse trigger Should be able to modify the content in the before_parse trigger. This change does that. ~~~~ //Event::triggerEvent('before_parse_content', array('content' => $this->content, 'page' => &$this)); Event::triggerEvent('before_parse_content', array('content' => &$this->content, 'page' => &$this)); ~~~~ ## Twig and Phile Settings I made 2 changes in the TWIG object. Files Changed: * Phile\plugins\phile\templateTwig\Classes\Template\Twig.php * ### 1) Phile Settings > NO CHANGES MADE in PHILE 1.0. I don't seem to have this problem, but we'll see in the future, since Phile 1.0 still acts the same way. For Phile 0.9 See the [blog post](%base_url%/posts/coretemplate). Noticed that some settings that were made in plugins were not making it into template. The `render` method is using a `$this->settings` that was defined in the constructor. Many plugins could have added more settings since then? ### 2) Added a template exist check > NO CHANGES MADE in PHILE 1.0. I don't seem to have this problem, but we'll see in the future. Stile monitoring For Phile 0.9: See the [blog post](%base_url%/posts/coretemplatetheme). When use a meta `template` phile does not check if the template actually exists. So it will throw an exception if it does not exist. I would rather it simply uses the default template if the meta `template` is not found. I think I can actually make this a plugin instead of modify core, but seems like core behavior to me.