За последние 24 часа нас посетили 16042 программиста и 1537 роботов. Сейчас ищут 907 программистов ...

Помогите вывести данные во views(mvc)

Тема в разделе "Сделайте за меня", создана пользователем dmartweb, 17 июл 2017.

  1. dmartweb

    dmartweb Новичок

    С нами с:
    17 июл 2017
    Сообщения:
    1
    Симпатии:
    0
    Всем здравствуйте,очень нужна помощь,не проходите мимо помогите).Суть в следующем нужно вывести дополнительный контент, то есть сейчас выводятся из родительской страницы ссылки на дочерние страницы, а нужно чтоб выводились дополнительно первая картинка и часть начального текста из страницы.
    Код на https://codeshare.io/5gebZN

    CONTROLLER

    PHP:
    1. <?php
    2.  
    3. /**
    4. * класс текстовых страниц
    5. */
    6. class controller_component_core_pages extends component {
    7.  
    8.     public function action_index() {
    9.    
    10.         $page_info = $this->model->get_page('/');
    11.         $this->set_global_data('page_id', 1);
    12.         $this->data['page_name'] = $page_info['name'];
    13.         $this->data['content'] = $page_info['text'];
    14.         $this->page['title'] = $page_info['title'];
    15.         $this->page['keywords'] = $page_info['keywords'];
    16.         $this->page['description'] = $page_info['description'];
    17.         $this->data['bread_crumbs'] = 'Вы на главной странице.';
    18.    
    19.         $view = !empty($page_info['view']) ? $page_info['view'] : $this->view;
    20.         if (!empty($page_info['theme_view'])) {
    21.             $this->page['theme']['file'] = $page_info['theme_view'];
    22.         }
    23.    
    24.         $this->page['head'] = $this->add_css_file(SITE_URL . '/cms/modules/components/pages/front_end/views/content.css');
    25.         $this->page['html'] = $this->load_view($view);
    26.  
    27.         return $this->page;
    28.     }
    29.  
    30.     // вывод страниц за исключением главной
    31.     public function action_else() {
    32.         $this->load_helper('breadcrumbs');
    33.         $not_found = false;
    34.    
    35.         $this->helper_breadcrumbs->add('Главная', SITE_URL);
    36.         $url = SITE_URL;
    37.         if($this->url['actions'][0] == 'index') {
    38.             $page_info = $this->model->get_page($this->url['component']);
    39.             $url .= '/' . $page_info['url'];
    40.        
    41.             $this->helper_breadcrumbs->add($page_info['name'], $url);
    42.        
    43.         } else {
    44.             $first = $this->model->get_main_info($this->url['component']);
    45.             $parent_id = $first['id'];
    46.             $url .= '/' . $first['url'];
    47.             $this->helper_breadcrumbs->add($first['name'], $url);
    48.        
    49.             foreach($this->url['actions'] as $i => $action) {
    50.                 $main_info = $this->model->get_main_info($action, $parent_id);
    51.                 if($main_info) {
    52.                     $url .= '/' . $main_info['url'];
    53.                
    54.                     $this->helper_breadcrumbs->add($main_info['name'], $url);
    55.            
    56.                     $parent_id = $main_info['id'];
    57.                     if(isset($this->url['actions'][$i++])) { // это нужная нам страница
    58.                         $page_info = $this->model->get_page($main_info['url'], $main_info['parent_id']);
    59.                     }
    60.                 } else {
    61.                     $not_found = true;
    62.                     break;
    63.                 }
    64.             }
    65.         }
    66.    
    67.         if($not_found) {
    68.             $this->page = $this->action_404();
    69.             return $this->page;
    70.         } else {
    71.             $this->set_global_data('page_id', $page_info['id']);
    72.        
    73.             $this->data['page_name'] = $page_info['name'];
    74.             $this->data['content'] = $page_info['text'];
    75.             $this->page['title'] = $page_info['title'];
    76.             $this->page['keywords'] = $page_info['keywords'];
    77.             $this->page['description'] = $page_info['description'];
    78.             $view = !empty($page_info['view']) ? $page_info['view'] : $this->view;
    79.             if (!empty($page_info['theme_view'])) {
    80.                 $this->page['theme']['file'] = $page_info['theme_view'];
    81.             }
    82.  
    83.             if ($this->view == 'children_menu' or $this->view == 'children_menu_in_bottom') {
    84.                 $this->data['children'] = array();
    85.            
    86.                 $results = $this->model->get_pages_by_parent_id($page_info[0]);
    87.            
    88.                 foreach ($results as $result) {
    89.                     $this->data['children'][] = array(
    90.                         'name' => $result['name'],
    91.                         'href' => SITE_URL . $this->url['request_uri'] . '/' . $result['url']
    92.                     );
    93.  
    94.                 }
    95.             }
    96.         }
    97.    
    98.         $this->data['bread_crumbs'] = $this->helper_breadcrumbs->render();
    99.  
    100.         $this->page['html'] = $this->load_view($view);
    101.  
    102.         return $this->page;
    103.     }
    104.  
    105. }
    106.  
    107. MODEL
    108.  
    109.   <?php
    110. /*
    111. * main component's model
    112. */
    113. class model_component_core_pages extends model {
    114.     public function get_page($url, $parent_id = 0){
    115.         $sql = "SELECT * FROM main m LEFT JOIN pages p ON p.main_id = m.id WHERE m.url = '" . $this->dbh->escape($url) . "' AND m.component = 'pages' AND m.parent_id = '" . (int)$parent_id . "' LIMIT 1";
    116.         return $this->dbh->row($sql);
    117.     }
    118.     /*
    119.     * возвращает содержимое таблицы main
    120.     *
    121.     */
    122.     public function get_main_info($url, $parent_id = 0){
    123.         $sql = "SELECT * FROM main m WHERE m.url = '" . $this->dbh->escape($url) . "' AND m.component = 'pages' AND m.parent_id = '" . (int)$parent_id . "' LIMIT 1";
    124.         return $this->dbh->row($sql);
    125.     }
    126.     /*
    127.     * возвращает дочерние страницы 1го уровня вложенности
    128.     * params:
    129.     *   children_count - join column with count of children / добавляет к выборке столбец с количеством дочерних страниц
    130.     *   content - join `pages` table with page content / добавляет к выборке таблицу `pages` с контентом
    131.     *   sort - set 'sort by' value / указывает порядок сортировки
    132.     *
    133.     */
    134.     public function get_pages_by_parent_id($parent_id = 0, $params = array()){
    135.         $sql = '';
    136.    
    137.         if(isset($params['children_count']) && $params['children_count'] === true){
    138.             $sql .= "SELECT m.*, COUNT(m2.id) AS children_count FROM main m LEFT JOIN main m2 ON m2.parent_id = m.id ";
    139.         } else {
    140.             $sql .= "SELECT * FROM main m ";
    141.         }
    142.    
    143.         if(isset($params['content']) && $params['content'] === true){
    144.             $sql .= "LEFT JOIN pages p ON p.main_id = m.id ";
    145.         }
    146.    
    147.         $sql .= "WHERE m.parent_id = '" . (int)$parent_id . "' AND m.component = 'pages'  GROUP BY m.id ";
    148.    
    149.         if(isset($params['sort'])){
    150.             $sql .= "ORDER BY " . $params['sort'] . " ";
    151.         } else {
    152.             $sql .= "ORDER BY m.id DESC";
    153.         }
    154.         return $this->dbh->query($sql);
    155.     }
    156.     /*
    157.         возвращает строку с урлом страницы
    158.     */
    159.     public function get_page_url($page_id, $url = '') {
    160.         $sql = "SELECT parent_id, url FROM main WHERE id = '" . (int)$page_id . "'";
    161.         $page = $this->dbh->row($sql);
    162.         if (!$page) {
    163.             return null;
    164.         }
    165.         $url = '/' . $page['url'] . $url;
    166.         if($page['parent_id'] == 0) {
    167.             return str_replace('//', '/', $url);
    168.         } else {
    169.             return $this->get_page_url($page['parent_id'], $url);
    170.         }
    171.     }
    172.  
    173. VIEWS
    174.  
    175. <div id="content" class="content">
    176.     <h1 id="page_name"><?php echo $page_name; ?></h1>
    177.     <p class="bread_crumbs"><?php echo $bread_crumbs; ?></p>
    178.   <?php if (isset($children) && !empty($children)) { ?>
    179.   <div id="page_children">
    180.     <ul>
    181.       <?php foreach ($children as $child) { ?>
    182.       <li>
    183.         <a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></br>
    184.      </li>
    185.       <?php } ?>
    186.     </ul>
    187.   </div>
    188.   <?php } ?>
    189.     <?php echo $content; ?>
    190. </div>
     
    #1 dmartweb, 17 июл 2017
    Последнее редактирование модератором: 18 июл 2017