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.