1.20.x layout.class.inc | Layout::setPath($path) |
Set a layout path.
File
- modules/
layout/ includes/ layout.class.inc, line 645 - Class for loading, modifying, and executing a layout.
Class
- Layout
- @file Class for loading, modifying, and executing a layout.
Code
function setPath($path) {
if (empty($this->menu_item) || $this->menu_item->path !== $path) {
// Use an existing menu item if one exists at this path.
if ($existing_item = layout_menu_item_load_multiple_by_path($path)) {
$this->menu_item = $existing_item;
}
// If this layout doesn't have a menu item, make one. If the path is
// provided by another module, no menu item is necessary.
elseif (layout_provides_path($path) === NULL) {
if (empty($this->menu_item)) {
$menu_item_settings = array(
'path' => $path,
'name' => $this->name,
);
$this->menu_item = new LayoutMenuItem($menu_item_settings);
}
else {
$this->menu_item->path = $path;
}
}
else {
if ($this->menu_item) {
$this->menu_item->delete();
}
$this->menu_item = NULL;
}
}
// On any path change, reset contexts.
if ($this->path !== $path) {
$this->path = $path;
$this->resetContexts();
}
}