Шаг 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( 1 => 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');
|