2015-12-24 5 views
1

Я установил Joomla v3.4.7 для тестирования и подготовки моего проекта. Шаг за шагом я создал компонент «HelloWorld» согласно официальному учебнику [https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Using_the_database][1] , и мне удалось отобразить список данных, а затем страницу редактирования добавлять или редактировать существующие данные, со стороны администратора, так же, какКак скопировать административный компонент Joomla как сайт один?

localhost/joomla-test/administrator/index.php?option=com_helloworld 

После окончания этого, я просто скопировал файлы в /Administrator/components/com_helloworld для /components/com_helloworld и перезапись предыдущих файлов, и доступ к компоненту сайта:

localhost/joomla-test/index.php?option=com_helloworld 

I t не работает! Я использовал firebug для отладки и получил

NetworkError: 500 Internal Server Error - http://localhost/joomla-test/index.php?option=com_helloworld

ошибка .... Что случилось?

Мой код:

сайта/helloworld.php:

<?php 
// import joomla controller library 
jimport('joomla.application.component.controller'); 

// Get an instance of the controller prefixed by HelloWorld 
$controller = JControllerLegacy::getInstance('HelloWorld'); 

// Perform the Request task 
$controller->execute(JFactory::getApplication()->input->getCmd('task')); 

// Redirect if set by the controller 
$controller->redirect(); 

сайт/controller.php

<?php 
// No direct access to this file 
defined('_JEXEC') or die; 

// import Joomla controller library 
jimport('joomla.application.component.controller'); 

/** 
* General Controller of HelloWorld component 
*/ 
class HelloWorldController extends JControllerLegacy 
{ 
    /** 
    * display task 
    * 
    * @return void 
    */ 
    protected $default_view = 'helloworlds'; 

    public function display($cachable = false) 
    {    
     parent::display($cachable); 
     echo "controller"; 
     return $this; 
    } 
} 

сайт/просмотров/helloworlds/view.html.php:

<?php 
    // No direct access to this file 
    defined('_JEXEC') or die; 

    // import Joomla view library 
    jimport('joomla.application.component.view'); 

    /** 
    * HelloWorlds View 
    */ 
    class HelloWorldViewHelloWorlds extends JViewLegacy 
    { 
    /** 
    * HelloWorlds view display method 
    * @return void 
    */ 
    function display($tpl = null) 
    { 
     // Get data from the model 
     $items = $this->get('Items'); 
     $pagination = $this->get('Pagination'); 

     // Check for errors. 
     if (count($errors = $this->get('Errors'))) 
     { 
      JError::raiseError(500, implode('<br />', $errors)); 
      return false; 
     } 
     // Assign data to the view 
     $this->items = $items; 
     $this->pagination = $pagination; 

     // Set the toolbar 
     $this->addToolBar(); 

     // Display the template 
     parent::display($tpl); 
    } 

    /** 
    * Setting the toolbar 
    */ 
    protected function addToolBar() 
    { 
      JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS')); 
     JToolBarHelper::deleteList('', 'helloworlds.delete'); 
     JToolBarHelper::editList('helloworld.edit'); 
     JToolBarHelper::addNew('helloworld.add'); 
    } 
} 

Пожалуйста, помогите, спасибо всем.

ответ

0

Это не работает таким образом (просто скопировав папку). Вам нужно будет установить компонент, упаковали его и затем установили на сервер. Вам нужно будет установить на сервер zipped-компонент (который имеет файл манифеста XML).

Попробуйте выполнить следующее: загрузите базовый компонент HelloWorld из Joomla, а затем установите его на свой веб-сайт, а затем перепишите его с файлов с вашего локального хоста.

0

У сайта и администратора есть небольшие отличия; наиболее релевантные связаны с шаблоном, поскольку в Admin вы можете рассчитывать на стандартный макет; поэтому в администраторе view.html вы настраиваете панель инструментов и sidemenu; на интерфейсе вы создаете меню, указывающее на представления с настройкой.

Лучше всего создавать новые файлы для контроллера и просмотра, а затем вы можете создавать свои модели, наследующие от модулей администратора, что лучше всего избегать дублирования кода, и это все равно даст вам максимальную гибкость при настройке Виды.

0

Панель инструментов не может работать в передней части. Странно, да, но если вы посмотрите, это отдельная вещь в папке администратора. Он также проверяет, находятся ли вы в админе. Однажды я сделал патч, чтобы удалить чек, но оказалось, что он сломал бы тонны компонентов, которые работали вокруг этого.
Во-вторых, есть много вызовов для вещей, которые полагаются на относительное позиционирование или которые могут даже явно требовать доступа администратора. В-третьих, действительно есть некоторые вещи, которые немного отличаются друг от друга, потому что в задней части вы в основном никогда не визуализируете обычный вид, только просмотр списка и вид редактирования.

Если вы хотите выполнять функции администратора в интерфейсе, лучший общий подход - посмотреть, как это делают com_config, Com_templates и com_modules.