Как скопировать компонент администратора Joomla как сайт?

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

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

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

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

Это не сработало! Я использовал Firebug для отладки, и я получил

NetworkError: 500 Внутренняя ошибка сервера —
HTTP: //localhost/joomla-test/index.php вариант = 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');
}
}

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

1

Решение

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

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

0

Другие решения

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

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

0

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

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

0

Курсы программирования от Skillbox. Черная пятница!
Подробнее >>>
×