Мне сложно определить, как именно работает маршрутизация в JomSocial. Кто-нибудь знает, как создать новое представление?Как создать новый вид в Jomsocial
ответ
Прежде всего, необходимо создать контроллер, чтобы сделать запрос вида:
файла: Контроллеры/hello.php
<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
class CommunityHelloController extends CommunityBaseController
{
function helloWorld() //index.php?option=com_community&view=hello&task=helloWorld
{
$document = JFactory::getDocument();
$viewType = $document->getType();
$view = $this->getView('hello', '' , $viewType);
echo $view->get('helloWorld');
}
function hello() //index.php?option=com_community&view=hello&task=hello
{
$document = JFactory::getDocument();
$viewType = $document->getType();
$view = $this->getView('hello', '' , $viewType);
echo $view->get('helloWorld');
}
}
?>
Вид: вид/привет/view.html.php Здесь вы помещаете переменные, которые будут переданы в шаблон файла Например:
<?php
defined('_JEXEC') or die('Restricted access');
jimport ('joomla.application.component.view');
class CommunityViewHello extends CommunityView {
function helloWorld() //This function shows a "Hello World" without an template view
{
echo 'Hello World';
}
function hello()
{
$user = CFactory::getUser($userid);
$tmpl = new CTemplate(); //Call a template file
echo $tmpl->set ('user', $user)
->fetch ('hello'); // Returns the templates/default/hello.php file
}
}
шаблонов файлов/по умолчанию/hello.php:
<?php defined('_JEXEC') or die();?>
<h2> This is an example </h2>
<div class="container">
<p> Hello, <?php echo $user->name; ?></p>
</div>
Вот и все!
Возможно, я сделал это в качестве комментария к ответу, данному @ Thavia-Farias в 2013 году, но моя репутация недостаточно высока, чтобы комментировать. Содержание моего ответа будет пересчитать ее информацию наряду с важнейших новых информационных, исправлений и усовершенствований по моему опыту с использованием JomSocial 4.2.1:
Во-первых, в контроллеры/hello.php, как это предусмотрено @ Thavia- Farias имеет ошибку: как в функции , так и в function helloWorld()
hello() конечная строка echo $view->get('helloWorld');
, но функция в function hello()
должна быть echo $view->get('hello');
. Как можно заметить, как * index.php? Вариант = com_community & вид = привет & задачи = HelloWorld и index.php? Вариант = com_community & вид = привет & задачи = привет оба называют вид HelloWorld, а не второй, вызывающий вид приветствия по своему усмотрению.
Кроме того, в моем опыте, а не положить шаблон на пути /templates/default/hello.php, я положил его на /шаблоны/customtemplatename/html/com_community/Раскладка, если вы используете cusomt template или /components/com_community/templates/jomsocial/layouts/, если вы используете шаблон jomsocial по умолчанию.
создать /components/com_community/controllers/hello.php:
<?php
defined('_JEXEC') or die();
class CommunityHelloController extends CommunityBaseController
{
public function renderView($viewfunc, $var = NULL) {
$my = CFactory::getUser();
$jinput = JFactory::getApplication()->input;
$document = JFactory::getDocument();
$viewType = $document->getType();
$viewName = $jinput->get('view', $this->getName());
$view = $this->getView($viewName, '', $viewType);
echo $view->get($viewfunc, $var);
}
function helloWorld()
{
$this->renderView(__FUNCTION__);
}
function hello()
{
$this->renderView(__FUNCTION__);
}
function display($cacheable = false, $urlparams = false) {
$this->renderView(__FUNCTION__);
}
}
?>
создать /var/www/html/components/com_community/views/hello/view.html.php:
<?php
defined('_JEXEC') or die('Restricted access');
jimport ('joomla.application.component.view');
class CommunityViewHello extends CommunityView {
function helloWorld() //This function shows a "Hello World" without an template view
{
echo 'Hello World';
}
function display() //This function what happens when the hello view is called without a task
{
echo 'welcome to the main landing page for the hello view! There is nothing else shown here besides this message.';
}
function hello()
{
echo $tmpl->fetch('hello');
}
}
Как вы можете видеть, если вы хотите, чтобы ваш взгляд, чтобы иметь представление по умолчанию, даже если ни одна из задач не называется, подобно тому, что происходит с /index.php?option=com_community & view = groups, тогда вы хотите назвать задачу как функцию отображения в контроллере и в представлении.
, наконец, создать /components/com_community/templates/jomsocial/layouts/hello.PHP:
<?php defined('_JEXEC') or die();?>
<h2> This is an example </h2>
<div class="container">
<p> Hello, <?php echo $my->name; ?></p>
</div>
$ моего был определен еще в контроллере! Если ваша группа взглядов и задач достаточно велика, у вас будут разные файлы для каждой задачи. Файлы задач с функцией выборки в view.html.php.
$tmpl = new CTemplate(); //Call a template file
echo $tmpl->set ('vars1', $vars1)
echo $tmpl->set ('vars2', $vars2)
echo $tmpl->set ('vars3', $vars3)
->fetch ('hello');
называет файл /components/com_community/templates/jomsocial/layouts/hello.php.
Использование ->fetch ('hello.greeting');
вызовов /components/com_community/templates/jomsocial/layouts/hello.greeting.php.
Если вы хотите создать новый каталог для этих затем ->fetch ('hello/create');
вызовов /components/com_community/templates/jomsocial/layouts/hello/create.php
Если вы хотите, чтобы создать пункты меню и псевдонимы ваши новые компоненты, тогда вам нужно создать новый файл (а также второй и изменить третий, если вы хотите выполнить заданные параметры параметров меню для своих задач):
создать файл: /components/com_community /views/hello/metadata.xml:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<view title="Groups">
<message>
<![CDATA[
Hello view
]]>
</message>
<options var="task">
<default name="Hello" msg="displays landing page" />
<option value="hello" name="- one greeting" msg="Display detail page of one greeting" />
<option value="helloWorld" name="- helloworldview" msg="Display whatever you have in the hello world task" />
</options>
</view>
<state>
<name>Hello Groups Layout</name>
<description>Hello Groups listings</description>
</state>
</metadata>
Этот файл добавит элементы в раздел «сообщество» в меню на панели меню администратора. Опция value
s - это имена задач. Опция без value
, которая использует тег default
, вытащит функцию display
, описанную ранее.
Если вам необходимо добавить параметры в файл, то вам нужно сделать что-то немного сложнее:
создать /components/com_community/views/hello/tmpl/default.xml:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="Name" option="View">
<message>
</message>
</layout>
<fields name="params">
<fieldset
name="basic"
label="Selected Group">
<field
name="item_id"
query="SELECT `id`, `name` FROM #__community_groups_category WHERE ORDER BY `id`"
type="sql"
key_field="id"
value_field="name"
label="Associated Group"
require="true"
description="Select the jomsocial group whose hello task this will be associated with">
</field>
</fieldset>
</fields>
</metadata>
Это создаст вкладку, в которой пользователи могут указать одну группу из доступных групп в базе данных. Он назначит идентификатор группы полю параметров в таблице базы данных #__menu
в объекте JSON params
как значение для ключа item_id
. Для того, чтобы ваше мнение, чтобы использовать это значение при отображении страницы, включить следующий код в просмотров/HELO/view.html.php:
$mainframe = JFactory::getApplication();
$jinput = $mainframe->input;
$document = JFactory::getDocument();
// Get category id from the query string if there are any.
$groupId = $jinput->getInt('group', 0);
// Load the parameters.
$params = $mainframe->getParams();
$params_array = $params->toArray();
if (isset($params_array['item_id']))
{
$groupId = $params_array['item_id'];
}
В этом случае ваша задача может получить необходимые особенности из либо URL-адрес, если он указан внутри вашего компонента (option = com_community & view = hello & task = hello & groupid = 5), или из вызываемого в главном меню или jcomocial элементов панели инструментов хранимых параметров в базе данных меню таблицу для этого пункта меню.
Параметры и вкладка, которые вы создаете здесь, будут видны для всех пунктов меню этой задачи. Если вам нужны разные вкладки для разных параметров меню, вам придется создавать совершенно разные виды. наличие всего в одном представлении может привести к неиспользуемым и потенциально вводящим в заблуждение вкладкам, где значения могут быть установлены вашими пользователями, но это не будет или не должно использоваться фактической задачей, заданной пользователем.
Простите, что я не тестировал каждую строку этого кода в интегрированном компоненте. Я выполнил все эти функции на мой взгляд, но сократил свой код, который был построен с первоначальным руководством из ответа @ Thavia-Farias. Хотя это более понятно, чем публикация моего обширного кода, он не был протестирован в текущей форме для функциональности. Обязательно проверьте свои журналы ошибок php для отладки вашего проекта. Я должен войти в систему как root (sudo su
) и проверить с помощью nano/var/log/mysqld/error_log в моей системе. Удачи!
- 1. Как создать несколько сообществ в jomsocial?
- 2. Как создать новый пользовательский вид (UserControl)? AvalonDock
- 3. Segue как новый вид
- 4. Заменить или создать новый вид внутри фрагмента?
- 5. Создать новый вид с помощью кода
- 6. Как я могу создать новый вид Android в цикле for?
- 7. Как создать новый вид (вкладку) в jenkins programatically
- 8. Как создать новый вид таблицы в XCode 4.3.2?
- 9. Jomsocial подключить
- 10. Как получить группы пользователей JomSocial
- 11. Как добавить новый вид в MWPhotoBrowser?
- 12. Как создать новый вид или копию существующего вида
- 13. Как создать новый вид сбоку сервера с помощью Treeline?
- 14. Как вы можете создать новый вид раскадровки без кнопки
- 15. Jomsocial content/article pages
- 16. Невозможно создать новый вид деятельности в андроида студии
- 17. Как создать новый CardView?
- 18. Можно ли создать новый вид из текущего представления в psql
- 19. Невозможно создать новый вид деятельность в андроиде студии
- 20. Создать новый вид в шаблоне «Панель администратора» от ExtJs 6
- 21. Перетащить новый вид в iOS
- 22. Показать новый вид в Ext.tab.Panel
- 23. UIImage/tapgesturerecognizer/Новый вид
- 24. Как внести новый вид в eclipse 4.2?
- 25. Как включить новый внешний вид в Android?
- 26. Как перемещать вид ClearCase в новый домен?
- 27. Как добавить новый вид/маршрут в экспресс?
- 28. Создать вид в django
- 29. Как проиндексировать медиавики и систему jomsocial point
- 30. Как создать клон-дублированный вид?
Я искал этот ответ какое-то время, так что спасибо. Однако, когда я пытаюсь перейти к index.php? Option = com_community & view = hello & task = hello, он просто перенаправляет меня обратно на index.php. Я что-то пропустил? – FlabbyRabbit
Я думаю, что я понял это ... 'view.html' должен быть' view.html.php' – FlabbyRabbit