rukovodstvo:rukovodstvo_razrabotchika

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
rukovodstvo:rukovodstvo_razrabotchika [07.05.15 в 16:51]
Артем Куц
— (current)
Line 1: Line 1:
-====== Руководство разработчика команды «KAD :: Systems» ====== 
-Добро пожаловать в нашу команду! 
-Мы занимаемся разработкой сайтов на системе управления HostCMS ​ 6.x, а также их доработкой и технической поддержкой. Все взаимодействия мы производим внутри нашей системы для работы с клиентами,​ которая показала себя очень эффективно. Данная система носит название «KAD :: Outsource». Она является основным инструментом для связи всех участников процесса разработки. ​ Регулярно мы обновляем её и дорабатываем новый функционал. 
-Данное руководство состоит из двух разделов. Первый из них – это правила и стандарты,​ принятые в нашей команде. Второй – практические советы и рекомендации. 
-===== Правила и стандарты ===== 
-==== Правила оформления кода ==== 
-Независимо от уровня профессионализма или отличительных особенностей синтаксиса,​ очень просто написать неряшливый или малопонятный код. Трудный для чтения код сложен в обслуживании и отладке. Скверный стиль кодирования ассоциируется с недостатком профессионализма.\\ 
-В нашей команде мы используем единый стиль программирования. Помимо удобочитаемости такого кода, красивый код говорит о нашем профессионализме. Если вы ставите над кодом копирайты,​ то есть подписываетесь именем нашей команды,​ то ваш код должен быть на уровне. Иначе вы ставите под угрозу репутацию самой команды и каждого из её участников. 
-Основные правила оформления кода:\\ 
-  - Правильное именование переменных и функций. 
-     - Имена глобальных переменных и констант должны вводиться в верхнем регистре 
-     - Префикс переменной определяет её тип. Для переменной типа string следует использовать префикс «s», например <​php>​$sInput</​php>​. Для bool – «b». Для объектов – это «o», например,​ <​php>​$oBook</​php>,​ для массива - «a». При этом, если у нас есть массив с данными одного типа, то помимо префикса массива,​ нужно указывать еще и тип элементов массива,​ например,​ <​php>​$aoBooks</​php>​. Кстати,​ предусмотрен префикс и для смешанных типов mixed – «m». ​ 
-    - Переменные,​ определенные в классе,​ как private всегда носят префикс «_», например,​ <​php>​$_oController</​php>​ 
-    - Временные переменные и итераторы следует называть коротко. Например,​ i, j, k, l, m, n. Для строковых и числовых временных переменных рационально использование названий без префикса,​ например <​php>​$name,​ $pass, $counter</​php>​. 
-     - Переменные,​ использующие несколько слов в названии,​ пишутся слитно,​ без знака «_». Например,​ <​php>​$oBookComment</​php>​. Но если речь идет о константе или глобальной переменной,​ то здесь целесообразно использование знака «_». Например,​ <​php>​$CACHE_DIR</​php>​. 
-    - Для имен методов и функций следует применять те же правила,​ что и для переменных. Начинаться имена методов и функций должны с символов в нижнем регистре. 
-    - При создании модели объекта с неопределенной выборкой,​ например,​ <​php>​$oShopItems = Core_Entity::​factory(‘shop_item’)</​php>​ имя переменной должно быть во множественном числе с содержанием префикса o - object. При уточнении выборки и получении массива объектов <​php>​$aoShopItems = $oShopItems->​findAll()</​php>​ префикс должен быть ao - array of objects. При создании модели конкретного объекта имя переменной должно быть в единственном числе, например,​ <​php>​$oShopItem = Core_Entity::​factory(‘shop_item’,​ 25)</​php>​. 
-  - Использование пустого пространства и фигурных скобок. 
-      - Чтобы усилить логическую структуру кода, следует использовать переносы строк – пустое пространство. Не бойтесь ставить переносы строк, давайте коду как можно больше свободы. 
-        - Cледует разбивать блоки инициализации ряда переменных по логическому смыслу,​ например<​code php> 
-$name = "​testname";​ 
-$login = "​testlogin";​ 
-$pass = "​testpass";​ 
-$oSite = Core_Entity::​factory('​site',​ $site_id); 
-$oUser = Core_Entity::​factory('​user',​ $user_id); 
-$oController = new Core_Controller($oUser);​ 
-</​code>​Первый блок с переменными содержит какие-то предустановленные значения. Второй – создание объектов. Третий – контроллера. Следует записать так:<​code php> 
-$name = "​testname";​ 
-$login = "​testlogin";​ 
-$pass = "​testpass";​ 
  
-$oSite = Core_Entity::​factory('​site',​ $site_id); 
-$oUser = Core_Entity::​factory('​user',​ $user_id); 
- 
-$oController = new Core_Controller($oUser);​ 
-</​code>​ 
-        - Управляющие конструкции – условия и циклы следует отделять переносами. Например,​ <code php> ​ 
-$bonus = 0; 
-  
-/* Вычисляем сумму бонусов товаров */ 
-foreach ($aoShopOrderItems as $oShopOrderItem) 
-{ 
- $bonus += $this->​getBonus($oShopOrderItem->​shop_item_id);​ 
-} 
-  
-return $bonus; 
-</​code>​ 
-      - Фигурные скобки всегда следует отделять переносом строки. 
-      - Отступы ​ 
-          - Отступы внутри управляющих конструкций должны присутствовать обязательно. 
-          - Также отступы и переносы строк следует использовать в сложных условиях и в сложных конструкциях,​ подразумевающих создание вложенных объектов.<​code php> 
-if (isset(Core_Page::​instance()->​object) 
- && strpos( 
- get_class(Core_Page::​instance()->​object), ​ 
- '​Informationsystem_Controller_Show' ​ 
- ) !== false 
- ) 
-{ 
-    ​$Informationsystem_Controller_Show->​addEntity( 
- Core::​factory('​Core_Xml_Entity'​) 
- ->​name('​current_group_id'​) 
- ->​value(intval(Core_Page::​instance()->​object->​group)) 
- )->​addEntity( 
-   Core::​factory('​Core_Xml_Entity'​) 
- ->​name('​current_item_id'​) 
- ->​value(intval(Core_Page::​instance()->​object->​item) 
- ) 
-    ); 
-}</​code>​ 
-  - Не используйте оператор echo для вывода html кода. Следует использовать закрывающие и открывающие php теги: <​html><?​php ?></​html>​ 
-==== Правила интеграции верстки ==== 
-Вынесены в документ “[[standarty:​standarty_integracii|Стандарты интеграции]]” 
- 
-====Порядок и правила обращения к техподдержке==== 
- 
-  - Поприветствовать. Вежливость не будет лишней. 
-  - Подробно разъяснить суть вопроса,​ приложить ссылки,​ скриншоты. 
-  - Приложить необходимые доступы. Обычно хватает доступов к админке сайта. Перед выдачей доступов создаем пользователя с данными support support, установив флажок «Привилегированный». 
-  - Выдачу данных доступа по FTP нужно согласовать с менеджером проектов или тимлидом. 
-  - После решения проблемы поблагодарить техподдержку. Удалить созданного пользователя из системы управления. 
-===== Практические советы и рекомендации ===== 
- 
-==== Создание нового сайта ==== 
- 
-Первым делом нужно сконфигурировать систему управления. Для этого: 
-  - Добавляем новый сайт 
-  - Переносим группу с пользователем в новый сайт запросом update user_groups set site_id = 2 where id = 3 
-  - Переносим статичные документы с ошибками запросами:​ 
-      - update documents set site_id=2 where id IN (2,4,5,6) 
-      - update document_dirs set site_id=2 where id=1 
-  - Создаем группу констант с названием "​Конфигурация"​ 
-  - Перемещаем все константы в эту группу запросом update constants set constant_dir_id=1 
-  - Изменяем качество jpeg на максимум(100),​ константа JPG_QUALITY 
-  - Переходим на созданный сайт и удаляем демо сайт 
-  - Отключаем модули "​Типограф"​ и "​Услуги раскрутки сайта"​ 
-  - Запрещаем индексацию сайта. Для этого в настройках сайта переходим к вкладке robots.txt и удаляем «admin», должно остатьтся только «disallow: /» 
-  - Перейти к модулю «Сайты» и добавить домен для текущего сайта. 
-  - Переходим к модулю ​ "XSL - шаблоны"​ и создаем группу с названием домена сайта. Устанавливаем её порядок сортировки "​100",​ чтобы она попала в самый верх. 
-  - Добавляем макет: “Основной макет сайта”,​ в нем еще 2 макета:​ “Основной” и “Для главной”. 
-  - Создаем меню сайта. Меню создается в модуле “Структура”. Добавляем меню с названием “Основное” и “Нет” – для разделов,​ которые не должны попасть в меню, но должны попасть в карту сайта. 
-  - В структуру добавляем: ​ 
-      - Главную страницу,​ документ “Главная страница”. 
-      - Поиск, если модуль поддерживается редакцией,​ ТДС, макет “Основной” 
-      - Google sitemap с путем "​sitemap",​ ТДС, макет “Основной”. 
-      - Карту сайта с путем "​map",​ ТДС, макет “Основной”. 
-      - Страницу ошибки 404, документ “Ошибка 404”. Прописать страницу ошибки можно в настройках сайта(модуль "​Сайты"​). 
-      - Страницу “Сайт отключен”,​ документ “Сайт отключен”. Прописываем её также в настройках сайта. 
-  - Очистить корзину. 
- 
-Затем нужно создать элементы структуры. Их берем из меню сайта, которое можно увидеть в верстке. 
-  - Элементы структуры,​ которые еще не задействованы необходимо именовать с префиксом "​~"​ 
-  - Раздел интернет-магазина всегда должен иметь путь "​shop"​ а корзина "​shop/​cart"​ 
-Все XSL шаблоны будут именоваться с префиксом,​ состоящик из 2 ключевых символов домена или названия сайта. Например,​ для tritan.ru это "​tt";​ для hasttings.ru это "​ht"​. ​ 
- 
-==== Интеграция верстки ====  
- 
-Интеграция – процесс внедрения верстки в движок сайта. После интеграции элементы сайта станут динамическими и будут управляться из админки. Важно правильно разметить верстку для интеграции – не все элементы сайта должны управляться. Например,​ копирайты никто и никогда не редактирует – они останутся в коде макета. ​ 
-Первым делом необходимо создать макеты сайта. Макеты в HostCMS могут быть бесконечно вложенными. Для любого сайта будет существовать 2 макета – «Основной макет» и «Главная». Перед переходом к дальнейшим действиям необходимо скопировать все папки верстки с картинками,​ стилями и скриптами в папку сайта, а также файлы “kad.php” и “template.php” из библиотеки Kad в папку modules/​kad. Далее: 
-  - Переходим к модулю «Макеты сайта» 
-  - Создаем макет с названием «Основной макет» 
-  - Помещаем в код макета код главной страницы верстки сайта. Предварительно во вставляемом коде нужно скорректировать пути к скриптам,​ стилям и картинкам. ​ 
-  - Шапку приводим к такому виду, как в руководстве по интеграции HostCMS, но скрипты и стили макета должны остаться подключены. Строку с вызовом метода showCss необходимо подключить после всех стилей верстки. Они должны быть перекрывающими. В дальнейшем при недочетах стилей верстки мы будем вносить перекрывающие стили в поле во вкладке «CSS» при редактировании макета. 
-  - Следующим шагом будет вывод меню сайта в шапке и футере. Это делается с помощью функции <​php>​Kad::​showMenu([XSL-шаблон],​ [id_меню])</​php>​. 
-  - Далее необходимо найти в верстке статичные элементы макета,​ которые редко, но могут изменяться пользователем. Это могут быть телефоны в шапке и футере или же рекламные баннеры,​ соц. иконки и т.д. Многострочные блоки и баннеры необходимо вынести в статичные документы(Модуль «Страницы и документы»). Для этого создаем документ,​ в который помещаем код блока. Сохраняем,​ запоминаем id. В макете в том месте, где мы этот блок кода вырезали,​ помещаем код <​php>​Kad::​showDocument([id_документа])</​php>​. ​ 
-  - Статичные блоки, указанные в п.6, но представленные в макете всего одной строкой без тегов, выносятся в константы. Это может быть адрес или телефоны. Если телефон имеет сложное оформление,​ необходимо использовать функции <​php>​Kad::​getPhoneBody</​php>​ и <​php>​Kad::​getPhoneCode</​php>​. ​ 
-  - Слайдеры,​ новости,​ статьи или другие информационные системы в макете выводятся с помощью функции Kad::​showInfosystem 
-  - Группы каталога товаров или товары выводятся с помощью функции <​php>​Kad::​showCatalog</​php>​ 
-  - Если требуется вывод новинок или распродаж,​ то следует использовать <​php>​Kad::​showFilteredCatalog</​php>​ 
-  - После этого на основе других страниц сайта нам необходимо выделить внутреннюю часть контента. В «Основном макете» должен остаться только тот код, который един для всех страниц сайта. 
-  - Создаем вложенный в «Основной макет» макет и называем «Главная» 
-  - Вложенную часть из «Основного макета» вырезаем и помещаем в только что созданный макет. 
-  - В «Основной макет» на месте вырезанного кода вставляем <​php><?​php Kad::​execute();​ ?></​php>​ - это функция,​ которая подключит вложенный макет. 
-==== Разработка и внедрение наблюдателей ==== 
- 
-Наблюдатели(они же хуки) позволяют вносить дополнительную логику при срабатывании стандартных функций и методов ядра HostCMS при этом не изменяя исходные файлы. (…) 
- 
-==== Создание многоязычных сайтов ==== 
- 
-Структура. ​ 
-В структуре создаем разделы с названиями языков,​ например,​ ru, en, az. Внутри каждого раздела создаем элементы структуры в соответствии с пунктами меню. ​ 
-Информационные системы и товары. ​ 
-В каждой информационной системе создаем разделы с названиями языков,​ как в структуре. В каждом разделе будут созданы элементы для своего языка. ТДС для инфосистем и товаров необходимо скорректировать так, чтобы она определяла язык который необходимо вывести. ​ 
-Страницы и документы. 
-Страницы и документы создаются в разделах с названием языков. В качестве идентификатора для выбора конкретного документа используем поле “Комментарий”. 
-Макеты. 
-В макетах для меню и страниц создаются специальные условия для определения языка и переключения нужного документа в зависимости от языка. 
rukovodstvo/rukovodstvo_razrabotchika.1431006698.txt.gz · Last modified: 26.06.15 в 14:56 (external edit)