Как вы организуете свою структуру шаблона в CodeIgniter? - PullRequest
9 голосов
/ 27 февраля 2012

Я буду создавать CMS для моего окончательного проекта курса веб-разработки, и мой учитель бросил мне вызов, создавая его в системе MVC, и сейчас я буду использовать CodeIgniter.

Поэтому я хотел бы знать, как вы организуете структуру файлов / папок.

Я буду использовать простую систему шаблонов: - На данный момент у меня есть файл конфигурации templates.php, который загружается автоматически и содержит имя выбранного шаблона и абсолютный путь к нему. - Папка шаблонов находится внутри папки представлений (это самый правильный способ сделать это?) - Прямо сейчас у меня возникли некоторые проблемы с доступом к файлам .css через файлы в представлении, и из того, что я прочитал, люди обычно помещают все эти файлы за пределы папки приложения.

Как ты обычно это делаешь? И, что касается того, что я строю, какие советы вы можете мне дать? Разве представления не должны содержать весь материал из шаблонов? (включая CSS внутри папки шаблонов)

Спасибо.

(я использую Code Ignitor 2.1.0)

EDIT:

Прямо сейчас, после структурирования всех файлов и папок, я попал в дилемму. Я добавил следующее в constants.php

<!-- language: lang-php -->
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'assets/templates/'.$config['selected_template'];

define('IMAGES_PATH', $config['template_abs_path'].'/img/' );
define('CSS_PATH', $config['template_abs_path'].'/css/' );
define('SCRIPTS_PATH', $config['template_abs_path'].'/js/' );

(если бы я не определил selected_template и template_abs_path, я мог бы поиграть с ними в константах)

И я включаю их в HTML следующим образом:

<!-- language: lang-html -->
<link rel="stylesheet" type="text/css" href="<?=CSS_PATH;?>style.css" />

Но теперь я пытался получить заголовок, сохраненный в конфигурации, но я не могу этого сделать, потому что мне нужно, чтобы все эти переменные были в другом файле templates.php, который я создал ранее, иначе это будет не признать мои переменные. (У меня шаблоны автозагрузки)

templates.php

<!-- language: lang-php -->
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['title'] = 'Title of the website';
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'templates/'.$config['selected_template'];

header.php

<div id="logo">
<h1><a href="#"><?=$this->config->item('title');?></a></h1>
</div>

Следовательно, мне нужно иметь обе конфигурации, чтобы они работали на моем сайте? Это действительно не имеет особого смысла для меня ...

Ответы [ 3 ]

10 голосов
/ 27 февраля 2012

Хорошая структура файлов / папок была бы ниже:

website_folder/
–––– application/
–––––––– config/
–––––––––––– autoload.php
–––––––––––– config.php
–––––––––––– ...
–––––––– controllers/
–––––––––––– examples.php
–––––––––––– index.html
–––––––––––– welcome.php
–––––––– ...
–––––––– views/
––––––––---- templates/
––––––––-------- backend.php
––––––––-------- frontend.php
–––––––––––– ....
–––––––––––– example.php
–––––––––––– index.html
–––––––––––– welcome_message.php    
–––– assets/
–––––––– css/
–––––––– js/
–––––––– images/
–––––––– templates/
––––––––---- frontend/
––––––––-------- css/
––––––––-------- js/
––––––––-------- images/
––––––––---- backend/   
––––––––-------- css/
––––––––-------- js/
––––––––-------- images/
–––––––– uploads/
–––––––– index.html
–––– system/
–––– user_guide/
–––– index.php
–––– license.txt 

Это всего лишь предложение.Таким образом, вы будете иметь ваши представления шаблонов в views / templates и ваши файлы css / js в assets / templates /

2 голосов
/ 27 февраля 2012

Я полностью согласен со структурой файловых папок web-johnny, но, по-моему, он упустил одну вещь, определяющую все пути к активам в файле ./application/config/constants.php, например,

define('IMAGES_PATH', your_absolute_path_of_images_folder);
define('CSS_PATH', your_absolute_path_of_css_folder);
define('SCRIPTS_PATH', your_absolute_path_of_scripts_folder);

и т. Д.на ... используйте эти константы во всем приложении, поэтому, если вам когда-либо понадобится изменить структуру файловых папок, вам просто нужно изменить значения этих констант.

1 голос
/ 27 февраля 2012

Проверьте модульные расширения HMVC , это действительно полезно, когда ваш проект начинает расти. Модульные расширения - HMVC делает PHP-каркас CodeIgniter модульным. Модули - это группы независимых компонентов (как правило, контроллер, модель и представление), размещенные в одном подкаталоге приложения, которые можно поместить в другие приложения CodeIgniter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...