Создаю модуль, но не получается

Тема в разделе "Общие вопросы", создана пользователем Эдди, 18 апр 2017.

  1. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    В первый раз это делаю, потому прошу не бросать камни... :(
    Сделал нормальный модуль с нуля. Все работает. Все выводится. OC 2.3
    НО.
    Нет заголовка, хотя этот код в контроллере есть:
    Код:
            $this->load->language('extension/module/comment');
            $data['heading_title'] = $this->language->get('heading_title');
    В папке language есть файл, в котором есть:
    Код:
    <?php
    // Heading
    $_['heading_title'] = 'Заголовок новой страницы';
    А в меню вверху выводится вот это в виде ссылки (то есть error):
    И внизу страницу выводится:
    А страница-то найдена и данные на нее выведены. Где копать?
    Спасибо...
     
  2. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    639
    заголовок выводится так, если вы про title
    Код:
    $this->document->setTitle('заголовок');
     
  3. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Спасибо. Нет. Я не о том заголовке. Но это тоже важно.
    Код:
    $data['heading_title'] = $this->language->get('heading_title');
    
    $this->document->setTitle($this->language->get('heading_title'));
    В общем, с заголовком разобрался. Разобраться бы еще, почему пишет Запрашиваемая страница не найдена! То есть, почему дает error, хотя данные на странице выводятся корректно.
     
    Последнее редактирование: 19 апр 2017
  4. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Как по мне, так лучше сделать вот так.
    PHP:
    $data['heading_title'] = $this->language->get('heading_title');
    $this->document->setTitle($data['heading_title']);
    К чему лишний раз обращаться к переменной language.
    Это так сказать ИМХО. А в целом на вкус и цвет....!
    Тут надо бы больше данных - как, где и что выводите!
     
    Последнее редактирование: 19 апр 2017
  5. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    100% верно.
    Если добавляю модуль в макет home, то все в порядке. А мне надо вывести его на отдельной странице.
    Создаю новый макет. Добавляю модуль. Даю название comment/comment (а вообще, как лучше путь обозвать?).
    Макет по этому адресу выводится. Но сверху добавляются "крошки" "home" и "Запрашиваемая страница не найдена", а снизу вот это
    Код:
    Запрашиваемая страница не найдена!
    К сожалению, запрашиваемая Вами страница не найдена. Вероятно, Вы указали несуществующий адрес, страница была удалена, перемещена или сейчас она временно недоступна!
    Если "крошки" добавляю свои, они прекрасно выводятся, но под "Запрашиваемая страница не найдена"...
     
  6. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    А отдельную страницу как создавали? У неё есть контролер?
     
  7. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    В модуле, конечно, есть контроллер.
    А дальше просто модуль вывел в новом макете.
     
  8. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Я не про модуль! Что скрывается за адресом comment/comment, для которого вы создаёте макет и выводите модуль?
     
  9. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Адрес должен вести на существующую страницу, у которой должен быть шаблон и конечно же контроллер. Новый макет не создаёт страницу!
     
  10. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Вот в этом я ничего не понимаю.
    Где искать эти файлы?
     
  11. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Полагаю, что их не существует!
    comment/comment это адрес к контроллеру, который должен вывести шаблон! А система Вам потому и пишет, что ничего такого не найдено. Вы же их не создали.
     
  12. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Тогда вопрос - как создать? Или где прочитать?
     
  13. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Вам нужно вывести на этой странице только модуль? + Хлебные крошки
     
  14. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Да
     
  15. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Создайте файл comment.php по адресу catalog/controller/information
    PHP:
    <?php
    class ControllerInformationComment extends Controller {
         public function 
    index() {
            
    $data['column_left'] = $this->load->controller('common/column_left');
            
    $data['column_right'] = $this->load->controller('common/column_right');
            
    $data['content_top'] = $this->load->controller('common/content_top');
            
    $data['content_bottom'] = $this->load->controller('common/content_bottom');
            
    $data['footer'] = $this->load->controller('common/footer');
            
    $data['header'] = $this->load->controller('common/header');

            if (
    file_exists(DIR_TEMPLATE $this->config->get('config_template') . '/template/information/comment.tpl')) {
                
    $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/information/comment.tpl'$data));
            } else {
                
    $this->response->setOutput($this->load->view('default/template/information/comment.tpl'$data));
            }
        }
    }
    Создайте шаблон /template/information/comment.tpl
    Код:
    <?php echo $header; ?>
    <div class="container">
        <div class="row">
            <?php echo $column_left; ?>
            <?php if ($column_left && $column_right) { ?>
            <?php $class = 'col-sm-6'; ?>
            <?php } elseif ($column_left || $column_right) { ?>
            <?php $class = 'col-sm-9'; ?>
            <?php } else { ?>
            <?php $class = 'col-sm-12'; ?>
            <?php } ?>
            <div id="content" class="<?php echo $class; ?>">
                <?php echo $content_top; ?>
                <?php echo $content_bottom; ?>
            </div>
            <?php echo $column_right; ?>
        </div>
    </div>
    <?php echo $footer; ?>
    
    Пробуйте пройти по адресу information/comment

    Это вариант без хлебных крошек. Тут по хорошему надо бы создать еще файл перевода и оттуда тянуть тайтл и т.п. А пока что проверьте работоспособность кода. Макет создавайте для адреса information/comment
     
    Эдди нравится это.
  16. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Спасибо. Это именно то, что я и недопонимал.
     
  17. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    По адресу http://localhost/index.php?route=information/comment дает ошибку:
     
  18. Vlad

    Vlad Эксперт

    Сообщения:
    4.093
    Симпатии:
    984
    открываем соседний файл и смотрим как подключается шаблон.
    В 2.3 шаблон подключается по другому, не так как показал в качестве примера @DiMoss
     
  19. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Спаааасибоооо! :)
    Код:
    $this->response->setOutput($this->load->view('information/comment', $data)); 
    Особое спасибо @DiMoss!!!
     
  20. Эдди

    Эдди Активный пользователь

    Сообщения:
    290
    Симпатии:
    3
    Совсем-совсем последний вопрос. Хлебные крошки должны быть в контроллере модуля (у меня так работает) или в макете?