-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpages.ru.json
101 lines (101 loc) · 28 KB
/
pages.ru.json
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
[
{ "Key": "PageTitle", "Value": "Страницы" },
{ "Key": "HeaderTitle", "Value": "Страницы" },
{ "Key": "HeaderDescription", "Value": "Страницы с содержимым автоматически соединяются с шаблонами и выводят блоки контента. Класс Page является основным элементом платформы WebForms.PHP. Страницы могут иметь пользовательские свойства, методы и обработчики событий. При помощи директив можно упростить процесс программирования страниц и расширить их функционал за счет пользовательских элементов управления." },
{ "Key": "IntroductionText1", "Value": "Для использования шаблонов, файлы страниц должны обрабатываться <strong>PHP</strong> (как правило, иметь расширение <strong>.php</strong>)." },
{ "Key": "IntroductionText2", "Value": "Страницы могут быть простыми, состоять из одного файла, содержащего <strong>HTML</strong> и, при необходимости, код <strong>PHP</strong>." },
{ "Key": "IntroductionText3", "Value": "Но для использования всех возможностей движка потребуется разделение кода <strong>HTML</strong> и <strong>PHP</strong>, как минимум, на два файла. В основном файле должно содержаться объектное представление страницы - класс. Во втором файле - разметка страницы (код <strong>HTML</strong>)." },
{ "Key": "IntroductionText4", "Value": "Файл с разметкой должен иметь тоже название, что и файл страницы, но с расширением <strong>.html.php</strong>." },
{ "Key": "IntroductionText5", "Value": "Помимо этого, каждая страница может иметь ресурсы локализации, которые должны располагаться в файлах <strong>.json</strong>." },
{ "Key": "ContentBlocks", "Value": "Блоки контента" },
{ "Key": "SimplePages", "Value": "Простые страницы" },
{ "Key": "SeparationPHPAndHTML", "Value": "Разделение кода PHP и HTML" },
{ "Key": "OnlyPHP", "Value": "Только код PHP" },
{ "Key": "MarkerName", "Value": "имяМетки" },
{ "Key": "ContentBlockExample", "Value": "\n Содержимое блока.\n Допустимо использование любых тэгов, \n серверного кода и \n элементов управления.\n" },
{ "Key": "ContentBlocksText1", "Value": "Содержимое для блоков контента должно располагаться в тегах: <code><php:Content /></code>. Имя (идентификатор) блока указывается в параметре <code>ID</code>." },
{ "Key": "ContentBlocksText2", "Value": "Все, что располагается за переделами тегов <code><php:Content /></code> будет проигнорировано." },
{ "Key": "ContentBlocksIgnoredText", "Value": "Этот текст будет проигнорирован, т.к. находится вне блока <php:Content />." },
{ "Key": "ContentBlocksOuntputText", "Value": "Это текст будет выведен вместо метки <php:MainContent/>." },
{ "Key": "ContentBlocksText3", "Value": "Допустимо размещение блоков для несуществующих в шаблоне меток. Это будет полезно при динамическом изменении шаблона, когда в одном шаблоне определен один набор блоков контента, а в другом - другой." },
{ "Key": "ContentBlocksText4", "Value": "В следующем примере показано два шаблона. В первом определен блок <code><php:MainContent/></code>, во втором два блока: <code><php:MainContent/></code> и <code><php:RightPanel/></code>. На странице контента определено содержимое для двух блоков. При использовании шаблона <strong>Layout1.php</strong> клиент получит только содержимое для блока <code><php:MainContent/></code>, поскольку в шаблоне нет других блоков (см. Результат #1). А при использовании шаблона <strong>Layout2.php</strong>, клиенту будет выдано содержимое определенное для обоих блоков (см. Результат #2)." },
{ "Key": "ContentBlocksText5", "Value": "Если на одной контентной странице будет размещено несколько блоков контента с одинаковым идентификатором, то будет использоваться последний блок. Так лучше не делать, т.к. будут расходоваться ресурсы на обработку всех блоков." },
{ "Key": "ContentBlocksCloneText1", "Value": "Это текст будет обработан, но не будет выведен, т.к. ниже размещен второй блок с идентификатором MainContent." },
{ "Key": "ContentBlocksCloneText2", "Value": "Это текст будет выведен вместо метки <php:MainContent/>." },
{ "Key": "SimplePagesText1", "Value": "Простые страницы состоят из одного файла, содержащего разметку и блоки контента, а также могут содержать директивы, пользовательские элементы управления и любой серверный код." },
{ "Key": "SimplePagesText2", "Value": "Простые страницы могут быть полезны для вывода статичного содержимого, когда не требуется управление процессом формирования страницы на сервере." },
{ "Key": "SimplePagesText3", "Value": "Для работы шаблонизатора, на страницу необходимо включить файл <strong>global.php</strong>, а также вызвать процесс обработки страницы командной <code>App::Magic()</code>." },
{ "Key": "SimplePagesText4", "Value": "В следующем примере показана реализация простой страницы, которая формирует содержимое для метки <code><php:MainContent/></code>. В директиве <code>#Page</code> указана ссылка на файл шаблона, а также заголовок страницы (<code><title /></code>)." },
{ "Key": "SimplePagesTitle", "Value": "Это простая страница" },
{ "Key": "SimplePagesText5", "Value": "Простые страницы не предоставляют доступ к объектному представлению страницы и имеют ограниченный функционал по управлению шаблонами и пользовательскими элементами управления." },
{ "Key": "SeparationPHPAndHTMLText1", "Value": "Для использования всех возможностей, рекомендуется разделять код <strong>HTML</strong> и <strong>PHP</strong>." },
{ "Key": "SeparationPHPAndHTMLText2", "Value": "В основном файле страницы создается класс страницы. Имя класса должно соответствовать имени файла страницы (без расширения). Разметка должна находиться в файле с расширением <strong>.html.php</strong>." },
{ "Key": "SeparationPHPAndHTMLText3", "Value": "Например, есть страница <strong>index.php</strong>, она должна иметь примерно следующее содержание:" },
{ "Key": "SeparationPHPAndHTMLText4", "Value": "А разметка должна располагаться в файле <strong>index.html.php</strong>. В следующем примере показан возможный вариант файла <strong>index.html.php</strong>." },
{ "Key": "SeparationPHPAndHTMLText5", "Value": "Такая модель позволяет снизить смешивание серверного и клиентского кода, а также позволяет полностью управлять процессом формирования страницы." },
{ "Key": "SeparationPHPAndHTMLText6", "Value": "Класс страницы может содержать любые публичные свойства и функции, которые можно использовать в коде разметки, через ключевое слово <code>$this</code>. Например, базовый класс <code>\\Nemiro\\UI\\Page</code> имеет свойство <code>Title</code>, которое содержит заголовок текущей страницы и его можно вывести на страницу следующим образом:" },
{ "Key": "ReadMoreAboutPageClass", "Value": "Подробнее о классе Page" },
{ "Key": "OnlyPHPText1", "Value": "Допустимо не создавать файлы с разметкой. В таком случае, страница будет состоять только из класса, а содержимое для блоков контента должно формироваться программно." },
{ "Key": "OnlyPHPText2", "Value": "Например, файл <strong>index.php</strong> может иметь следующее содержание." },
{ "Key": "OnlyPHPText3", "Value": "Это страница без разметки" },
{ "Key": "OnlyPHPText4", "Value": "А здесь у нас контент для блока MainContent." },
{ "Key": "OnlyPHPText5", "Value": "Но такой подход используется редко, поскольку для большинства случаев это не очень удобно." },
{ "Key": "DirectivePageText1", "Value": "Директива <code><?#Page ?></code> позволяет переопределить параметры инициализации страницы заданные по умолчанию (в файле <strong>config.php</strong>)." },
{ "Key": "DirectivePageText2", "Value": "Директива располагается в верхней части страницы <strong>HTML</strong>, параметры записываются в стиле атрибутов тегов <strong>HTML/XML</strong>. Например: <code><?#Page Title=\"Заголовок страницы\" Layout=\"~/Layouts/_Layout.php\" ?></code>" },
{ "Key": "DirectivePageText3", "Value": "Список поддерживаемых параметров представлен в следующей таблице." },
{ "Key": "DirectivePageLayout", "Value": "Позволяет указать файл шаблона, который следует использовать при формировании страницы." },
{ "Key": "DirectivePageTitle", "Value": "Позволяет указать html-заголовок страницы (аналог тега <title></title>)." },
{ "Key": "DirectivePageOptimized", "Value": "Позволяет управлять режимом оптимизации результирующего html-кода страницы." },
{ "Key": "DirectivePageCache", "Value": "Позволяет управлять кешированием страницы." },
{ "Key": "DirectivePageCulture", "Value": "Позволяет задать культуру (язык) для страницы. Как правило, используется стандартный двухбуквенный код языка. Например: ru, en." },
{ "Key": "DirectivePageText4", "Value": "В следующем примере показано использование директивы <code><?#Page ?></code> для назначения заголовка страницы и включения режима оптимизации <strong>HTML</strong>." },
{ "Key": "DirectivePageText5", "Value": "Использование директивы <code><?#Page ?></code> наиболее актуально при создании <a href=\"#simple\">простых страниц</a>." },
{ "Key": "DirectiveRegister1", "Value": "Как и в <a href=\"/templates.php${Lang}\">шаблонах</a>, на обычных страницах можно использовать директиву <code><?#Register ?></code> для регистрации <a href=\"/controls.php${Lang}\">пользовательских элементов управления</a>." },
{ "Key": "DirectiveRegister2", "Value": "Директива <code><?#Register ?></code> принимает четыре параметра, список которых представлен в следующей таблице." },
{ "Key": "DirectiveRegisterSrc", "Value": "Путь к основному файлу элемента управления." },
{ "Key": "DirectiveRegisterTagPrefix", "Value": "Префикс имени элемента управления, который будет использоваться при размещении экземпляра элемента на странице. Префикс может быть полезен для разделения элементов на группы, привязки к определенному источнику, или, когда на странице одновременно требуется разместить несколько элементов с одинаковыми именами, но разным источником." },
{ "Key": "DirectiveRegisterTagName", "Value": "Имя элемента управления, которое будет использоваться при размещении экземпляра элемента на странице." },
{ "Key": "DirectiveRegisterClassName", "Value": "Указывает имя класса элемента. По умолчанию, в качестве имени класса ожидается название файла элемента, без учета расширения. Например, основной файл элемента <strong>Message.php</strong>, то ClassName по умолчанию будет <code>Message</code>." },
{ "Key": "DirectiveRegister3", "Value": "Количество директив <code><?#Register ?></code> на одной странице ограничивается, разве что, здравым смыслом." },
{ "Key": "DirectiveRegister4", "Value": "В следующем примере показано использование директивы <code><?#Register ?></code> для регистрации на странице <a href=\"/controls.php${Lang}\">пользовательских элементов управления</a> <code>Message</code> и <code>TabControl</code>, и их последующее использование." },
{ "Key": "AllOk", "Value": "Всё хорошо!" },
{ "Key": "ExamplePleaseNote", "Value": "Обратите внимание" },
{ "Key": "ExampleTab1", "Value": "\n Элементы TabControl и Message не являются частью WebForms.PHP,\n эти элементы были сделаны специально для демонстрационного сайта.\n" },
{ "Key": "ExampleBut", "Value": "Однако..." },
{ "Key": "ExampleTab2", "Value": "\n Но при желании вы можете использовать эти элементы в своих проектах, \n просто скопировав файлы элементов из папки /Controls.\n Для правильной работы этих элементов также потребуется Bootstrap3.\n " },
{ "Key": "ClassPageText1", "Value": "Класс <code>\\Nemiro\\UI\\Page</code> (далее <code>Page</code>) - этой основной класс, который отвечает за формирование страниц." },
{ "Key": "ClassPageText2", "Value": "От класса <code>Page</code> должны наследоваться (<code>extends</code>) классы всех страниц." },
{ "Key": "ClassPageText3", "Value": "Если у страницы нет класса, то используется экземпляр класса <code>Page</code> по умолчанию, с ограниченными возможностями." },
{ "Key": "ClassPageText4", "Value": "В следующем фрагменте кода показан вариант наследования класса страницы <code>Forum</code> от базового класса <code>Page</code>." },
{ "Key": "PropertiesText1", "Value": "Класс <code>Page</code> имеет следующие публичные свойства." },
{ "Key": "PageClassOptimized", "Value": "Позволяет управлять режимом оптимизации результирующего html-кода страницы.<br />Программно изменить режим оптимизации можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>." },
{ "Key": "PageClassCache", "Value": "Позволяет управлять кешированием страницы.<br />Программно изменить режим кеширования страницы можно в обработчике события <a href=\"#preload\">PreLoad</a>." },
{ "Key": "PageClassLayout", "Value": "Содержит путь к файлу шаблона. Это либо значение по умолчанию, из файла <strong>config.php</strong>, либо значение определенное в директиве <code><?#Page ?></code>, либо установленное программно значение.<br />Программно изменить путь к файлу шаблона можно в обработчике события <a href=\"#preload\">PreLoad</a>." },
{ "Key": "PageClassEncode", "Value": "Название кодировки страницы. Передается в <code>Content-Type</code>.<br />Программно изменить значение этого свойства можно в обработчике события <a href=\"#preload\">PreLoad</a>." },
{ "Key": "PageClassCulture", "Value": "Код культуры (язык) для страницы. Как правило, используется стандартный двухбуквенный код языка. Например: ru, en.<br />Программно изменить значение этого свойства можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>." },
{ "Key": "PageClassTitle", "Value": "Заголовок страницы (аналог тега <title></title>).<br />Программно изменить значение этого свойства можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>." },
{ "Key": "PageClassContent", "Value": "Коллекция блоков содержимого страницы; где ключом является имя (идентификатор) блока, а значением - содержимое блока.<br />Программно изменить блоки контента можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>.<br />Например: <code>$this->Content['MainContent'] = 'Контент для блока MainContent.';</code>" },
{ "Key": "PageClassMeta", "Value": "Коллекция метатегов; где ключом является имя (идентификатор) тега, а значением - содержимое тега.<br />Программно добавить метатеги можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>.<br />Например: <code>$this->Meta['DESCRIPTION'] = 'Описание страницы.';</code>, на выходе будет метатег:<br /><code><meta name=\"DESCRIPTION\" content=\"Описание страницы.\" /></code>.<br />Для установки описания и ключевых слов также можно использовать методы <code>SetDescription</code> и <code>SetKeyWords</code>.<br />Например: <code>$this->SetDescription('Описание страницы.');</code>" },
{ "Key": "PageClassScripts", "Value": "Массив ссылок на клиентские скрипты, которые будут включены в страницу.<br />Программно добавить или изменить ссылки можно в обработчике события <a href=\"#preload\">PreLoad</a> или <a href=\"#load\">Load</a>." },
{ "Key": "PageClassControls", "Value": "Коллекция элементов управления; где ключ - идентификатор элемента (<code>ID</code>), а значение - элемент управления.<br />Программно изменить свойства элементов управления можно в обработчике события <a href=\"#load\">Load</a>.<br />Обратите внимание, что через эту коллекцию нельзя получить прямой доступ к экземплярам элементов управления, это лишь возможность определить значения свойств элементам, которые будут созданы в процессе формирования страницы. Через коллекцию <code>Controls</code> невозможно получить доступ к публичным методам элемента управления." },
{ "Key": "PageClassResources", "Value": "Коллекция ресурсов локализации; где ключ - имя ресурса, а значение - локализованная строка.<br />Программно изменить ресурсы можно в обработчике события <a href=\"#load\">Load</a>." },
{ "Key": "PropertiesText2", "Value": "Все публичные свойства доступны для классов-потомков, т.е. классов страниц." },
{ "Key": "PropertiesText3", "Value": "Во избежание конфликтов, имена пользовательских свойств не должны пересекаться с именами свойств базового класса." },
{ "Key": "EventsText1", "Value": "У страницы существует три события, которые можно обработать." },
{ "Key": "PreLoadText1", "Value": "Событие <code>PreLoad</code> возникает после инициализации страницы, до начала вывода HTTP-заголовков, загрузки шаблона и ресурсов локализации." },
{ "Key": "PreLoadText2", "Value": "Как следствие этого, в обработчике события <code>PreLoad</code> можно изменить путь к файлу шаблона и добавить произвольные заголовки <strong>HTTP</strong>." },
{ "Key": "PreLoadText3", "Value": "Управлять ресурсами локализации (свойство <code>Resources</code>) в обработчике этого события не имеет смысла, т.к. ресурсы перезаписываются при загрузке файлов локализации. Однако можно изменить <code>Culture</code>, чтобы загрузились ресурсы для определенного языка." },
{ "Key": "PreLoadText4", "Value": "В следующем примере показано изменение файла шаблона в обработчике события <code>PreLoad</code>." },
{ "Key": "LoadText1", "Value": "Событие <code>Load</code> происходит перед формированием данных для вывода." },
{ "Key": "LoadText2", "Value": "В обработчике этого события можно изменить заголовок страницы, метатеги, список клиентских скриптов, содержимое блоков контента и определить значения свойствам пользовательских элементов управления." },
{ "Key": "LoadText3", "Value": "В следующем примере показано изменение заголовка страницы в обработчике события <code>Load</code> и добавление описания в метатеги страницы при помощи метода <code>SetDescription</code>." },
{ "Key": "LoadText4", "Value": "Новый заголовок страницы" },
{ "Key": "LoadText5", "Value": "Описание страницы." },
{ "Key": "LoadCompleteText1", "Value": "Событие <code>LoadComplete</code> происходит после формирования и вывода данных." },
{ "Key": "LoadCompleteText2", "Value": "В обработчике этого события ничего изменить нельзя сделать, это просто возможность зафиксировать процесс завершения создания страницы." },
{ "Key": "LoadCompleteText3", "Value": "Страница сформирована!" },
{ "Key": "LocalizationText1", "Value": "Для локализации страниц можно использовать локальные и глобальные ресурсы (<strong>global.json</strong>)." },
{ "Key": "LocalizationText2", "Value": "Локальные ресурсы - это файлы с расширением <strong>.json</strong>, имеющие тоже название, что и основной файл страницы. В имени файла должна указываться культура (язык), для которой предназначены ресурсы." },
{ "Key": "LocalizationText3", "Value": "Например, для страницы <strong>index.php</strong> могут быть следующие файлы ресурсов: <strong>index.json</strong> - ресурсы по умолчанию, <strong>index.ru.json</strong> - ресурсы для русского языка, <strong>index.en.json</strong> - ресурсы для английского языка, <strong>index.de.json</strong> - ресурсы для немецкого языка и т.п." },
{ "Key": "LocalizationText4", "Value": "Действие локальных ресурсов распространяется и на шаблоны. Эту особенность можно использовать для создания статичных ресурсов заголовков страниц и/или метатегов." }
]