AGAVA partners programs http://agava.ru/partners/            

Название функции

             
Веб-курсы


Что это?

Оглавление

Основы
Основы основ

Практика
Гостевая книга
Простой сайт
Структура сайта (MVC)
Ядро (Light)
Ядро
Гостевая на SQL
Статические страницы
Модуль новостей
Система регистрации

Теория
Дебаггинг
Регулярные выражения
Введение в ООП
Паттерны проектирования

Репозитарий
BB-code
Почтовый класс
Пагинатор
Всякие полезности

Download
Полезные утилиты

Разное
Видеокурсы
Последние изменения
Вопросы и замечания сюда



Реклама

Диеты для похудения
Фреймворк Kohana. Обучение. Мануал на русском.







Шаг 6

Организация структуры (продолжение)

Продолжим.
В индексе у нас появилась инициализация переменной, значение которой получается сервером извне. Таких переменных в приложении обычно очень много и нужны они в разных модулях. Чтобы не запутаться и не повториться, переменные стоит инициализировать в отдельном файле.
Файл этот общий и поместить его надо в корень сайта.
variables.php
1
2
3
4
5
6
7
8
9
10
<?php
  
  
/**
* Получаем GET переменную 
* Receive GET a variable
*/
$page = !empty($_GET['page']) ? $_GET['page'] : NULL;


Соответственно подключить к индексу.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php


/** 
* Получаем файл переменных  
* Receive a variables file  
*/ 
    
include './variables.php'

    
ob_start();   

/**   
* Подключаем меню   
* Includes the menu   
*/   
    
include './skins/tpl/menu.tpl';   

/** 
* The switch of modules 
* Переключатель страниц 
*/       
    
switch($page)  
    {  
/**   
* Подключаем модуль приветствия   
* Includes the greeting module   
*/          
        
case 'main':     
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl';  
        break;  
/**   
* Подключаем модуль второй страницы   
* Includes the module of the second page   
*/  
        
case 'second'
            include 
'./modules/second/index.php'
            include 
'./skins/tpl/second/show.tpl';  
        break;  
/**   
* Подключаем модуль приветствия по умолчанию  
* Includes the greeting module   
*/            
        
default: 
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl'
        break;     
    }   

    
$content ob_get_contents();   
    
ob_end_clean();   
/**   
* Подключаем главный шаблон   
* Includes the basic template   
*/   
    
include './skins/tpl/index.tpl';

Теперь дальше. Что бы нам не запутаться в файлах, ответственных за вывод, нужно их промаркировать. Вот так:
skins/tpl/main/show.tpl
1
2
3
4
5
6
7
8
9
<!-- skins/tpl/main/show.tpl begin -->  

<div style="padding:10px; background-color:#33FFFF;"> 
<h3 style="color:#003399;">Привет, <?php echo $who ?>!</h3> 
</div> 

<!-- skins/tpl/main/show.tpl end -->
И остальные в том же духе. Запустите приложение и посмотрите исходный код (правой мышкой по экрану -> посмотреть исходный код)
Теперь можно без труда найти файл, который отвечает за вывод интересующего нас фрагмента.

Еще одна тонкость. Так как у нас есть возможность менять скины, то мы можем сделать мультиязычный сайт, подключая скин на нужном языке.
Но.
В файле modules/main/index.php у нас имеется кириллица, которая полезет на все страницы. Файл этот может быть довольно большим и сложным, делать такие файлы с разными языками и переключать модули по подобию скинов не имеет никакого смысла. По этому все слова, которые должны попасть в вывод, нужно просто заменить константами. Константы эти определять в разных файлах (в зависимости от языка). А вот их уже и подключать по мере надобности. Сделаем в корне еще один каталог (language) и поместим туда файл
language/ru.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  

/**
* Варианты модуля приветствия  
* Variants of the module of a greeting
*/  
    
define('IRB_WHO_FIRST',  'Мир'); 
    
define('IRB_WHO_SECOND''Солнце'); 
    
define('IRB_WHO_THIRD',  'Небо'); 
    
define('IRB_WHO_FOURTH''Вася'); 
    
define('IRB_WHO_FIFTH',  'Петя');

Изменить язык сайта теперь легко и просто, нужно только изменить путь до языкового файла . Идея стара как бабушка плезиозавра, ныне покойного. В путь вместо названия файла подставим константу, а в неё уже запишем то, что нужно. А для того, что бы настройки были все в одном месте, организуем конфигурационный файл.
config.php
1
2
3
4
5
6
7
8
9
10
<?php
 

/**
* Choice of language of a site
* Выбор языка сайта
*/ 
    
define('IRB_LANGUAGE''ru');

index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php


  
/** 
* We connect a configuration file 
* Подключаем конфигурационный файл 
*/ 
    
include './config.php';  

/** 
* We connect a file of the language 
* Подключаем языковой файл 
*/ 
    
include './language/'IRB_LANGUAGE .'.php'
     
/** 
* Получаем файл переменных  
* Receive a variables file  
*/ 
    
include './variables.php'

    
ob_start();   

/**   
* Подключаем меню   
* Includes the menu   
*/   
    
include './skins/tpl/menu.tpl';   

/** 
* The switch of modules 
* Переключатель страниц 
*/       
    
switch($page)  
    {  
/**   
* Подключаем модуль приветствия   
* Includes the greeting module   
*/          
        
case 'main':     
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl';  
        break;  
/**   
* Подключаем модуль второй страницы   
* Includes the module of the second page   
*/  
        
case 'second'
            include 
'./modules/second/index.php'
            include 
'./skins/tpl/second/show.tpl';  
        break;  
/**   
* Подключаем модуль приветствия по умолчанию  
* Includes the greeting module   
*/            
        
default: 
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl'
        break;     
    }   

    
$content ob_get_contents();   
    
ob_end_clean();   
/**   
* Подключаем главный шаблон   
* Includes the basic template   
*/   
    
include './skins/tpl/index.tpl';


Структура теперь будет такой:


Осталось изменить сам модуль, (modules/main/index.php) заменив слова константами:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
  

/**
* Выбор случайного значения из массива 
* Choice of casual value from a file
*/
    
$arr_who = array( 
                       
=> IRB_WHO_FIRST
                            
IRB_WHO_SECOND
                            
IRB_WHO_THIRD
                            
IRB_WHO_FOURTH
                            
IRB_WHO_FIFTH 
                     
); 
            
    
   
$who $arr_who[rand(1,count($arr_who))]; 

Теперь можно не волноваться за вологодский пронос в англоязычном скине. Все слова, попадающие в браузер юзера будут взяты из нужного файла. Если конечно сделать такой:
language/en.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
   

/**
* Варианты модуля приветствия  
* Variants of the module of a greeting
*/ 
    
define('IRB_WHO_FIRST''World'); 
    
define('IRB_WHO_SECOND','Sun'); 
    
define('IRB_WHO_THIRD''Sky'); 
    
define('IRB_WHO_FOURTH','Vasia'); 
    
define('IRB_WHO_FIFTH''Petia');

и заменить в конфиге
1
2
3
4
5
6
7
8
9
10
<?php
 

/**
* Choice of language of a site
* Выбор языка сайта
*/ 
    
define('IRB_LANGUAGE''en');

Рейтинг@Mail.ru Рейтинг@Mail.ru Яндекс цитирования
irbis-team © 2009