• Инструменты для разработчика

    • Самые удобные инстременты для разработчика, которые облегчат жизнь любого как начинающего так и продвинутого разработчика. Украшатели, уменьшители, конвертеры кодов. Доменные инструменты. Всё в одном комплекте.
  • Использование BB кодов. Тут указаны существующие BB коды на форуме.

[PHP] СОЗДАНИЕ ДВИЖКА НА CODEIGNITER 3 + HMVC. ЧАСТЬ 3. ПИШЕМ МОДУЛЬ PAGE

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
914
Репутация
448
Баллы
74
Награды
2
Адрес
mySQL
Лучшие ответы
0
  • Супер постер
  • Постер
Будем делать сердце фронт-енда нашего движка - вывод страниц. Что мы получим в конце работы с нашим движком в этой статье?
  • Сформированную и продуманную таблицу в бд для страниц сайта
  • Рендинг данных самой страницы в отдельном шаблоне
  • Проверку на существование страницы
  • Формирование мета данных, для сео продвижения и передачу данных общему шаблону
  • Вывод страницы по адресу
    Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
  • Настройка роутинга codeigniter для обработки модуля
МОДУЛЬ PAGE. СОЗДАНИЕ БАЗЫ ДАННЫХ ДЛЯ ВСЕХ СТРАНИЦ САЙТА
Создадим таблицу pages
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Теперь разберем по полочкам:
  • id - идентификатор каждой страницы, ключевое поле
  • name - имя страницы, при отсутствии заголовка H1 или мета тегов - будет выводится именно это имя на сайте
  • cat_id - идентификатор категории к которой принадлежит данная страница, пригодится позже при написании модуля категории
  • image - изображение страницы(для раздела категории или вывода изображения внутри статьи)
  • content - текст, полное содержание страницы
  • meta_title, meta_h1, meta_keywords, meta_description - мета данные для каждой страницы
  • meta_url - хоть URL страницы не является мета данными )), мы будем использовать данное название для поля во всех наших модулях, что бы проверять существование той или иной страницы в одной системной функции
  • template - очень важное поле, с его помощью можно будет для любой страницы задать свой шаблон. По умолчанию данные будут рендерится в общем шаблоне page_full.tpl
  • created и edited - дата создания и редактирования страницы, пригодится для вывода новостей или блога
  • post_status - отображать или не отображать, вот в чем вопрос
  • short_content - краткое содержание, можно использовать для вывода анонса в разделах, либо дополнительных данных
  • author - автор статьи
  • post_viewed - счетчик просмотра страницы

Конечно же вы можете добавить любые другие поля, например post_from, post_to - что бы сделать отложенную публикацию, а для joomla и wordpress. Или date_hidden - что бы отображать или не отображать дату публикации. Все это вы оставите для изобретения индивидуальных проектов;-)
СОЗДАНИЕ ШАБЛОНА PAGE_FULL.TPL ДЛЯ ВЫВОДА ДАННЫХ СТРАНИЦЫ И ПОДГОТОВКА INDEX.TPL
В прошлой статье мы с вами уже использовали один из готовых шаблонов bootstrap, продолжим практику слегка видоизменив его структуру.
HTML:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Выводим meta_title, meta_description, meta_keywords. Шапку сайта, футер и content - вывод генерированного шаблона страницы нашим модулем page.

Теперь нужно подготовить содержание шаблона страницы. Создадим файл в папке /themes/site/page_full.tpl. Код:
HTML:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Отлично! В новом шаблоне кратким условным оператором выводим название страницы либо заданный meta_h1. В описании - дату создания статьи и имя автора с ссылкой. Если задали изображения для страницы выводим и его перед основным текстом. Правый сайдбар оставим, позже заполниться полезной информацией.
МОДЕЛЬ - ВИД - КОНТРОЛЛЕР МОДУЛЯ PAGE НА CODEIGNITER 3
Пришла пора заняться программированием. Создаем папку page в modules. В папке с модулем, в controllers создадим файл page.php и модель page_model.php в папке models

Не буду ходить во круг да около и сразу выложу рабочий код контроллера. пояснения ниже.
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Вот оно сердце нашего произведения ^-) по порядку:
  • В конструкторе подключаем общую библиотеку main_lib - мы уже использовали ее в предыдущем уроке
  • Подключаем модель page_model - пока в ней будет только один запрос, но позже модель будет расширятся
  • Метод view, контроллера page - принимает передаваемый параметр $url
  • С помощью функции check_isset_page библиотеки main_lib - проверяем существует ли данная страницы. Передаем функции имя url и название таблицы в котором проверять, существует ли такая страница или вывести страницу 404. Вот код функции для нашей общей библиотеки:
    PHP:
    Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
  • Далее, еще одна общая для большинства будущих модулей функция get_meta_data
    PHP:
    Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
    Выбираем значения всех нужных полей. И если мы не задавали meta_title для нашей страницы - то будем выводить ее имя. Так же c помощью модуля настройки - смотрим нужно ли добавлять суффикс к заголовку страницы, если в базе есть данные - объединяем значения. Эта же функция - создает многомерный ассоциативный массив $data - в который помещаются все наши основные данные для рендера общего шаблона.
  • Функция модели page_model - get_page($url) - выбирает и помещает в наш массив под индексом content - данные из базы.
  • Если значение поля post_status равно 0, то выводим страницу 404
  • Если страница расположена в категории, то также выбираем все данные категории и помещаем в массив $data под индексом category
  • Увеличиваем счетчик просмотра на 1 с помощью функции модели - update_page_viewed
  • Проверяем - следует ли нам загружать конкретный файл отображения или использовать стандартный page_full.tpl
  • Вызываем функцию загрузки отображения следующим образом: в первом параметре - указываем шаблон, во втором параметре из контроллера в отображение передаем массив $result с данными, третий параметр позволяет нам возвратить данные строкой а НЕ отправлять их сразу в браузер - мы же будем выводить все в общем шаблоне.
  • возвращаем все данные основному методу view и рендерим функцией библиотеки main_lib наш шаблон с данными страницы.

    • В добавок - не достающий код модели page_model.php
      PHP:
      Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
      СОЗДАНИЕ И ВЫВОД ГЛАВНОЙ СТРАНИЦЫ ДВИЖКА HOMEPAGE С ПОМОЩЬЮ НОВОГО МОДУЛЯ
      Давайте создадим в нашей таблице page первую и обязательную, и главную страницу homepage. Именно она будет открываться как индексная главная страница в нашем движке. Мы сделаем это в роутере codeigniter.
      PHP:
      Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
      Отлично! Проверяем - заходим на наш сайт
      Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
      - и о чудо! Модуль работает =).

      Но и это еще не все. Ни по фен-шую выводить пользователю такой адрес страницы. Установим собственную маршрутизацию. открываем файл /application/config/routes.php и добавим следующие строки
      PHP:
      Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
      Теперь создадим собственный файл роутинга для нашего модуля в папке config/routes.php
      PHP:
      Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
      B создадим метод вызываемый контроллером модуля по умолчанию
      PHP:
      Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
      В предыдущей, 2й версии codeigniter. Всего выше описанного можно было и не делать. Достаточно было дописать две строки в основном файле роутинга:
      $route['page/:)any)'] = "page/view/$1";
      $route['default_controller'] = "page/view/homepage";
      Но в третьей версии и расширении HMVC данный подход почему то не сработал, приходится импровизировать, пока не будет такой возможности в расширения HMVC для новой версии codeigniter делать так же.
      Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
      .
      Статья взято из сайта polyakov.co.ua
 
Сверху Снизу