Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 8358 Просмотров
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
Допустим я хочу вынести в этот отдельный файл настройки шаблона. Как его правильно подключить через файл index.php. Нет я знаю что это делается обычным include, но  как это правильно осуществить в Joomla? Ну там с безопасностью (типа первая строчка файла index.php) ну и всякие джумловские команды нужно ли писать в этот файл?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
настройки шаблона задаются в templateDetails.xml (в корне шаблона) и не надо ничего подключать
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
// No direct access.
defined('_JEXEC') or die;
Защита от прямого доступа
И для настроек есть же файл templatedDetails.xml
чем его вам не хватает
Не делайте из шаблона паровоз. Не нужны там лишние классы и всякая неприятность. Это шаблон и не более. Не смотрите на фреймворки. Все должно быть просто и элементарно
Пример, начало кода шаблона
Код: php-brief
<?php
/**
 * @package   Joomla.Led template
 * @file    index.php
 * @copyright Copyright (C) 2005 - 2013 Fregate Studio. All rights reserved.
 * @license   GNU General Public License version 2 or later; see LICENSE.txt
 * @autor Fedor Vlasenko
 * @date: 22.02.13
 */

// No direct access.
defined('_JEXEC') or die;

//Убираем метатег
unset ($this->_metaTags['http-equiv']);

// Убираем мета тег генератор
$this->setGenerator(NULL);

// Язык сайта
$lang = $this->getLanguage();

// Проверка на главную
$home =(JURI::getInstance()->toString()==JURI::base());

//Путь к шаблону
$tmpPath = '/templates/' . $this->template;

$app = JFactory::getApplication();
//Имя сайта
$nameSite = $app->getCfg('sitename');

//CSS-класс страницы
$activeMenu = $app->getMenu()->getActive();
$pageclass = $activeMenu ? $activeMenu->params->get('pageclass_sfx', 'default'): 'default';

//Гость
$guest = JFactory::getUser()->guest;

//Параметры в массив
$params=$this->params->toArray();

//Отключаем глючный canonical
unset($this->_links[array_search(
    array('relation' => 'canonical', 'relType' => 'rel', 'attribs' => array()), $this->_links)]);


// Included CSS Files
$this->addStyleSheet($tmpPath . '/css/templates.css');
?>
<!DOCTYPE html>
SmokerMan опередил
*

fbr

  • Завсегдатай
  • 1676
  • 208 / 7
в index.php

Код: php
include __DIR__ . '/template.php';

в файле template.php можете создавать условия, обрабатывать настройки и т.п..
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
ТС, скорее всего и хотел вынести все условия и проверку свойств в отдельный файл, оставив только разметку.
Вот пример подобного подхода - вынос логики в отдельный файл
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
Да все верно настройки задаются в файле дэтаилс, но я просто хочу вынести отдельные стили (вернее только нужные цвета и размеры) в теге <style> в отдельном php файле, и все php переменные с параметрами для файла дэтаилс, для настройки стилизации шаблона из админки Joomla. Все это нужно вынести в отдельный php файл, чтобы не нагромождать index.php

Вот это походу то что я хотел

в index.php

Код: php
include __DIR__ . '/template.php';

в файле template.php можете создавать условия, обрабатывать настройки и т.п..

А в самом файле template.php нужно писать
Код
defined('_JEXEC') or die;
или другие Joomla команды?
« Последнее редактирование: 16.08.2013, 18:01:39 от RAZORG1991 »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
и какой в этом смысл затрачивать время на подключение файла
и не $doc класс уже объявлен $this в шаблоне.  $this->addScript(); $this->addStyleSheet(); $this->setMetaData();
отключение скриптов плагином переопределяя класс Отключить Mootols, Jquery и Bootstrap в Joomla 3
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
(вернее только нужные цвета и размеры) в теге <style>
вот теперь просвечиваются ваши мысли, задачи
стили выносите в отдельный файл CSS и подключаете  $this->addStyleSheet('myfile.css'); исходя из заданных условий.
Может придется написать несколько таких файлов под различные задачи
Правда и сам раньше грешил. Подсовывал php файл как CSS, при этом сжимая его $this->addStyleSheet('myfile.php');
Код: php-brief
<?php
header('Content-type: text/css; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000). ' GMT');
header("Content-Encoding: gzip");
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
$params = JFactory::getApplication()->getTemplate(true)->params->toArray();
//А дальше CSS. Можно вперемешку с php
?>
.main{width:<?php echo $params['mainwidth'] ;?>px;}
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
вот теперь просвечиваются ваши мысли, задачи
стили выносите в отдельный файл CSS и подключаете  $this->addStyleSheet('myfile.css'); исходя из заданных условий.
Может придется написать несколько таких файлов под различные задачи
Правда и сам раньше грешил. Подсовывал php файл как CSS, при этом сжимая его $this->addStyleSheet('myfile.php');
Код: php-brief
<?php
header('Content-type: text/css; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000). ' GMT');
header("Content-Encoding: gzip");
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
$params = JFactory::getApplication()->getTemplate(true)->params->toArray();
//А дальше CSS. Можно вперемешку с php
?>
.main{width:<?php echo $params['mainwidth'] ;?>px;}

Я уже рассматривал такой варант, как предлагаете Вы, но так придется писать несколько вариантов "тем", скажем так, что увеличивает работу. А я хочу чтобы размеры и цвета, можно было менять непосредственно из настроек шаблона в админке, для большей гибкости шаблона
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
почему несколько? как раз в этом варианте я и привел вариант использования параметров, в примере ширина, что вам мешает аналогично использовать цвет. Разберитесь внимательно с примером
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
почему несколько? как раз в этом варианте я и привел вариант использования параметров, в примере ширина, что вам мешает аналогично использовать цвет. Разберитесь внимательно с примером

Что-то я не совсем понял, вот весь этот код, который Вы привели выше, его что прямо в CSS файле можно писать? Или Вы имели ввиду в том же index.php, тогда где тег <style> в котором должно быть
Код
.main{width:<?php echo $params['mainwidth'] ;?>px;}
и т.д.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
его что прямо в CSS файле можно писать
это файл myfile.php из примера, подменой заголовка я отдаю браузеру его как CSS файл
а подключать также как файл стилей CSS в шаблоне index.php
Код: php-brief
$this->addStyleSheet('myfile.php');
в итоге вы получите:
 <link rel="stylesheet" href="/ваш путь/myfile.php" type="text/css" />
единственно могут быть проблемы с строкой
Код: php-brief
header("Content-Encoding: gzip");
тогда удалите ее
*

fbr

  • Завсегдатай
  • 1676
  • 208 / 7
.. я просто хочу вынести отдельные стили (вернее только нужные цвета и размеры) в теге <style> в отдельном php файле, и все php переменные с параметрами для файла дэтаилс, для настройки стилизации шаблона из админки Joomla. Все это нужно вынести в отдельный php файл, чтобы не нагромождать index.php
На мой взгляд, подход верный
Гораздо удобнее манипулировать подключением стилей и даже блоками html-кода из настроечного файла.
Но только на стадии разработки шаблона.

Я обычно, после того как настройки выбраны, прописываю значения параметров напрямую в index.php, а настроечный файл отключаю.
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
это файл myfile.php из примера, подменой заголовка я отдаю браузеру его как CSS файл
а подключать также как файл стилей CSS в шаблоне index.php
Код: php-brief
$this->addStyleSheet('myfile.php');
в итоге вы получите:
 <link rel="stylesheet" href="/ваш путь/myfile.php" type="text/css" />
единственно могут быть проблемы с строкой
Код: php-brief
header("Content-Encoding: gzip");
тогда удалите ее

Ого)))) Видимо я еще не сталько профи, чтобы знать такое))) Но мне кажется что мой вариант как-то попроще, по крайней мере для меня)))

Ну раз пошла тогда такая "пьянка" ^-^  Никто случайно не подскажет можно ли через в шаблоне создавать свои типы полей в настройках самого шаблона.
Допустим как это делается в модулях я уже изучил (к примеру как прикручивать еще и файлы js если таковы нужны). Нужно создать папку admin->elements в папке с модулем, создать файл php с именем нового поля (в примере asset) в нем, и занести в него, к примеру, вот такой код:

Код
<?php
defined('JPATH_BASE') or die;
jimport('joomla.form.formfield');
 
class JFormFieldAsset extends JFormField {
        protected $type = 'asset';
        protected function getInput() {
                $doc = JFactory::getDocument();
                $doc->addStyleSheet(JURI::root().$this->element['path'].'файл_стилей.css');
                $doc->addScript(JURI::root().$this->element['path'].'файл_скрипта.js');
                return null;
        }
}
?>

Также вкинуть в папку название_модуля->admin все необходимые js и CSS файлы
И в XML файле прописать
Код
 <field type="asset" path="modules/mod_модуль/admin/" />

А что если повторить данную схему в шаблоне? Т.е. прописать скажем
Код
field type="asset" path="templates/название_шаблона/admin/" />
и в папке с шаблоном прописать такую же структуру

Будет ли работать данная схема? Сколько не рылся в инете ничего не нашел по этому поводу. Ув. форумчане помогите "добить" уже эту тему пожалуйста, очень нужно!
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Цитировать
Ну раз пошла тогда такая "пьянка" Smiley
Код
 <field type="asset" path="modules/mod_модуль/admin/" />
такое правило нигде не будет работать
если нужно создать свое поле, то путь к ним прописывается в
Код
<fieldset name="Some-Name" addfieldpath="Some path to fields"><field...>...
где в "Some path to fields" прописывается путь для своих типов

Свои типы полей работают везде, вне зависимости от типа расширения. Шаблон - это один из типов расширения
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
Код
 <field type="asset" path="modules/mod_модуль/admin/" />
такое правило нигде не будет работать
если нужно создать свое поле, то путь к ним прописывается в
Код
<fieldset name="Some-Name" addfieldpath="Some path to fields"><field...>...
где в "Some path to fields" прописывается путь для своих типов

Свои типы полей работают везде, вне зависимости от типа расширения. Шаблон - это один из типов расширения

А есть какая-то правильная структура папок (и их наименование) и их вложенность в расширение для правильной работы?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
А есть какая-то правильная структура папок (и их наименование) и их вложенность в расширение для правильной работы?
Ну тут структура папок не важна, т.к. указывается полный путь к типам
Здесь самое главное правильно именовать сами файлы
Например
Код
...
<fieldset name="Some-Name" addfieldpath="modules/mod_модуль/fields/">
<field name="Some-Name" type="mytype" />
</fieldset>
...

В директории "modules/mod_модуль/fields/" должен лежать файл mytype.php c описанием типа
Код
<?php
defined('JPATH_BASE') or die;
jimport('joomla.form.formfield');

class JFormFieldMytype extends JFormField {
        protected $type = 'mytype';
...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

На локал сервере страницы сайта без шаблона, CSS и картинок

Автор Fati

Ответов: 0
Просмотров: 705
Последний ответ 15.06.2025, 11:57:45
от Fati
Изменение шаблона Joomla! 2.5.24

Автор SecondPC

Ответов: 0
Просмотров: 4291
Последний ответ 26.03.2021, 18:09:33
от SecondPC
Руководство - создание шаблона для Joomla 2.5

Автор dynamit

Ответов: 6
Просмотров: 30845
Последний ответ 02.02.2020, 22:28:15
от AlinaBut
Ошибка при установке шаблона - Fatal error: Call to a member function setDebug() on a non-object in

Автор Mirotvoretz

Ответов: 33
Просмотров: 69064
Последний ответ 11.11.2018, 13:22:26
от vik38
При установки шаблона ошибка <<HTTP 500 (Internal Server Error)>>

Автор nekitko

Ответов: 16
Просмотров: 16847
Последний ответ 21.06.2017, 20:39:11
от bonny