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

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Адаптация шаблона
« : 10.03.2011, 09:50:57 »
В шаблоне для версии 1.5 модули выводятся таким способом
Код
<?php echo loadModule('logo2', 'clean', null, null, false) ; ?>
такой вывод я могу заменить на
<jdoc:include type="modules" name="logo2" class="clean"/>
но при этом не передаются все div, как правильно изменить?

Вот функция, я так понимаю в нее надо вставить jdoc, только как ни пытался, не вышло.
Код
if(!function_exists('loadModule'))
{
function loadModule($moduleName, $chrome = null, $class = null, $classCallback = null, $inner = true, $innerClass = 'modules', $modulesCSS = null, $moduleCSS = null, $raw = false)
{   
$magic =& get_instance();   
    if(!module($moduleName)) return;
$modules = magicModHelper::getModules($moduleName);

$modulesCSS = "style=\"$modulesCSS\"";

    if($raw == false) echo "<div id=\"$moduleName\" class=\"$class\" $modulesCSS >";
if(!$inner == false) echo "<div class=\"$innerClass\">"  ;
if(!$chrome == null) $chrome = 'chrome_' . $chrome;   

if($magic->admin->getCoreConfig('moduleTools') == 'true' AND isAdmin()) 
{
echo '<div class="mod-details">';   
ob_start();
?>
<div class="mod-details-position">[<?php echo $moduleName; ?>]</div> 
<?php
echo ob_get_clean();
}  
 
foreach($modules as $module)   
{   
jimport('joomla.html.parameter');
$params = new JParameter($module->params); 
$moduleClass = $params->get('moduleclass_sfx');

if(!$classCallback == null)
{   $previousID = $module->id - 1;
$currentID = $module->id;     
$nextID = $module->id + 1;     
$classCallbackArgs = array($currentID, $previousID, $nextID);
    $moduleClass .= ' ' . call_user_func_array($classCallback, $classCallbackArgs);


if($module->content == null) 
{
$module->content = magicModHelper::renderModule($module);


$moduleClass = ' ' . $moduleClass;   
                   
$callBackCheck = strrpos($moduleClass, "cfunc_");     
if(!$callBackCheck == null)
{   
$chromeCallBackFunc = explode("cfunc_", $moduleClass);   
$chromeCallBackFunc = explode(" ", $chromeCallBackFunc['1']);
$moduleClass = str_replace('cfunc_', ' ', $moduleClass); 
}

else
{
$chromeCallBackFunc = null;
}     

$chromeArgs = array($module, $params, $moduleClass, $moduleCSS);   

if(!$chromeCallBackFunc == null)
{   
$classFunc = 'chrome_' . $chromeCallBackFunc['0'];   
   
    if(function_exists($classFunc))
{   
if($magic->admin->getCoreConfig('moduleTools') == 'true' and isAdmin())
{
echo $magic->joomla->moduleDetails($classFunc, $module, $params, $moduleClass, $moduleCSS);   
}
echo call_user_func_array($classFunc, $chromeArgs);   
}
else

  if($magic->admin->getCoreConfig('moduleTools') == 'true' and isAdmin())
{
echo $magic->joomla->moduleDetails($chrome, $module, $params, $moduleClass, $moduleCSS);   
}     
    echo $magic->joomla->moduleDefaultRender($module, $params, $moduleClass, $moduleCSS);
}
}

else
{   
if(!$chrome == null)

if($magic->admin->getCoreConfig('moduleTools') == 'true' and isAdmin())
{
echo $magic->joomla->moduleDetails($chrome, $module, $params, $moduleClass, $moduleCSS);   
}     
    echo call_user_func_array($chrome, $chromeArgs);
}   

else
{   
if($magic->admin->getCoreConfig('moduleTools') == 'true' and isAdmin())
{
echo $magic->joomla->moduleDetails($chrome, $module, $params, $moduleClass, $moduleCSS);   
}
echo $magic->joomla->moduleDefaultRender($module, $params, $moduleClass, $moduleCSS);   
}
}

}   

    if($raw == false) echo "</div>";
if(!$inner == false)  echo "</div>"; 
if($magic->admin->getCoreConfig('moduleTools') == 'true' and isAdmin()) 
{
echo '</div>'; 
}   

}


Прошу помощи, с уважением, Алексей.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Адаптация шаблона
« Ответ #1 : 10.03.2011, 10:13:28 »
Ну тут явно свои стили модуля, которые по идее находятся в файле вашшаблон/html/modules.php. По идее этот файл надо перетащить в шаблон для 1.6, и потом вот так выводить:

Код
<jdoc:include type="modules" name="logo2" style="clean"/>
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #2 : 10.03.2011, 14:53:36 »
Я думал может как то можно в функцию в писать jdoc, типа
echo <jdoc:include type="$moduleName" name="$chrome" style="$class"/>, но что то у меня не вышло.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Адаптация шаблона
« Ответ #3 : 10.03.2011, 15:17:12 »
Ну если Вы хотите так, то тогда:
Код
<jdoc:include type="<?php echo $moduleName; ?>" name="<?php echo $chrome; ?>" style="<?php echo $class; ?>" />

Но непонятно, зачем так делать.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Адаптация шаблона
« Ответ #4 : 10.03.2011, 15:37:46 »
echo <jdoc:include type="$moduleName" name="$chrome" style="$class"/>, но что то у меня не вышло.
а с чего оно должно выйти?
type - указывается тип для рендеринга, в данном случае это моудли (modules)
name - указывается позиция модулей
style - стиль, стандартный или из modules.php

а в этой строке написана полная охенея.
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #5 : 10.03.2011, 15:40:25 »
Ну вот типо того. Смотрите как получается
в body.php, файл отвечающий за вывод главной страницы, все модули выводятся таким образом
Код
<?php echo loadModule('logo2', 'clean', null, null, false) ; ?>
, в моем понятии идет обвязка стилями и выводится сам модуль. Необходимо, чтобы обвязка стилем оставалась и соответственно выводился сам модуль, который в данный момент не выводится. Есть еще один момент, не понимаю его особенности, при ?tp=1 показаны позиции модулей, и все вроде ничего, теоретически - если модули отображаются, то должны и в обычном режиме отображаться, а не хотят ведь.

И еще 1 нюанс почему мне нужно так сделать, так это то, что там есть такие позиции как user1, user2, user3 и т.д., которые имеют свою логику отображение, которая и прописывается в этом loadModule, точнее там функция loadModuleSet, но я бы на примере этой функции попробовал бы и там исправить.
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #6 : 10.03.2011, 15:47:34 »
а с чего оно должно выйти?
type - указывается тип для рендеринга, в данном случае это моудли (modules)
name - указывается позиция модулей
style - стиль, стандартный или из modules.php

а в этой строке написана полная охенея.

Я согласен, что тут неправильно, пытался делать правильно и выводить как надо, тут на скорую руку написал, поэтому так получилось.
Вопрос остается актуальным. Я самоучка в php, HTML, CSS и т.д., много чего читал и не мало знаю, но без правильной теории все равно не могу понять часть вещей, хотя они порой элементарны. И достойного учебника по Joomla если честно не нашел. А в учебниках по php как мне повелось встречать расписано про одни массивы, а что такое $this или когда надо и не надо ставить $ или # нифига не написано.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Адаптация шаблона
« Ответ #7 : 10.03.2011, 15:52:56 »
а что такое $this или когда надо и не надо ставить $ или # нифига не написано.
Если в учебниках не написано когда нужно и не нужно ставить $, то я инопланетянин.
По поводу $this можно почитать в ОПП для PHP.
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #8 : 10.03.2011, 16:20:05 »
Вот один из примеров в котором я немного запутался
Код
			$params = new JParameter($module->params);  
$moduleClass = $params->get('moduleclass_sfx');
Где то пишут что нужно добавлять jimport('joomla.html.parameter');, а просмотрев несколько шаблонов, заметил, что не везде добавляют, смысл не понял.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Адаптация шаблона
« Ответ #9 : 10.03.2011, 16:29:54 »
jimport в Joomla это аналог инклуда в PHP (require_once), просто в нем используются директории относительно библиотек Joomla (папка libraries)
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #10 : 10.03.2011, 16:34:16 »
Код
if(!function_exists('loadModule'))
Тут я так понимаю идет проверка на наличие функции loadModule в коде, тогда не понятно для чего стоит !, ведь ! это логическое НЕ, получается Если не найдена функция loadModule, то выполняется код.

Тут все понятно
Код
function loadModule($moduleName, $chrome = null, $class = null, $classCallback = null, $inner = true, $innerClass = 'modules', $modulesCSS = null, $moduleCSS = null, $raw = false)
загружаются переменные

Вот по параметру
Код
$magic =& get_instance(); 
(get_instanse();) в интернете вообще ничего понятного не нашел, я так понимаю это из Joomla. Может быть есть файлы include в которых описаны все переменные и их значения.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Адаптация шаблона
« Ответ #11 : 10.03.2011, 16:36:29 »
waw555 - зачем начинать изучение PHP с адаптации шаблона? Ещё и шаблон выбрали ну просто жестокий - понаворотили ерунды всякой... Всегда поражался, сколько же ненужной "гадости" можно засунуть в шаблон!
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Адаптация шаблона
« Ответ #12 : 10.03.2011, 16:40:04 »
я не знаю зачем эту функцию было писать, весь шаблон и так рендерится c помощью Joomla.
шаблон это класс JDocumentHTML, который является расширение класса JDocument отсюда и пляшите.
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #13 : 10.03.2011, 16:45:53 »
waw555 - зачем начинать изучение PHP с адаптации шаблона? Ещё и шаблон выбрали ну просто жестокий - понаворотили ерунды всякой... Всегда поражался, сколько же ненужной "гадости" можно засунуть в шаблон!
Дело в том, что я этот шаблон использовал на Joomla 1.5, и он и вправду очень тяжелый, но я его уже переделал для 1.6 без всего, только index.php, CSS и картинки фона. Но отображаться он стал неправильно, точнее главная страница как положено, а все остальные как попало.

На счет изучения - затрудняюсь ответить, не нашел более полезного чем практика.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Адаптация шаблона
« Ответ #14 : 10.03.2011, 16:50:26 »
но я его уже переделал для 1.6 без всего, только index.php, CSS и картинки фона. Но отображаться он стал неправильно, точнее главная страница как положено, а все остальные как попало.

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

Цитировать
не нашел более полезного чем практика.
Здесь конечно соглашусь, но точно не на шаблоне...
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #15 : 10.03.2011, 20:32:05 »
bzzik: Я тут по форуму по шарился, ты практически как и я начинал, и задавал похожие вопросы, например про &, нужен или не нужен )))

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

Вот код отвечающий за вывод компонента.
Код
if(!function_exists('component'))
{
function component()
{   
$magic =& get_instance();

ob_start();
?>
<div id="component-<?php echo $magic->joomla->currentComponent;?>">
<jdoc:include type="component" />
</div>   
<?php
    return ob_get_clean();
}   
}
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Адаптация шаблона
« Ответ #16 : 10.03.2011, 21:00:33 »
вот код в шаблоне, который выводит тело компонента
Цитировать
<jdoc:include type="component" />
и не надо городить непонятно чего, если тем более не знаете что делаете.
Читайте доки по созданию шаблона и не изобретайте велосипед.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Адаптация шаблона
« Ответ #17 : 11.03.2011, 10:28:09 »
bzzik: Я тут по форуму по шарился, ты практически как и я начинал, и задавал похожие вопросы, например про &, нужен или не нужен )))
Ну все - подловил...  >:( Я кстати кроме форума, ещё и литературу покупал. Если хотите, то посоветую хорошие книжки.

Но мое мнение остается тем же - начали изучение не с того материала... SmokerMan Вам тоже мягко намекает на это ;)
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #18 : 14.03.2011, 13:20:22 »
Цитировать
Ну тут явно свои стили модуля, которые по идее находятся в файле вашшаблон/html/modules.php. По идее этот файл надо перетащить в шаблон для 1.6, и потом вот так выводить:

Вот теперь разобрался, спасибо!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

free_lancer

  • Захожу иногда
  • 114
  • 1 / 0
  • скоро, скоро!..
Re: Адаптация шаблона
« Ответ #20 : 14.03.2011, 20:58:01 »
jimport в Joomla это аналог инклуда в PHP (require_once), просто в нем используются директории относительно библиотек Joomla (папка libraries)

слегка оффтоп - а jimport  может перейти, скажем, на подпапку из components?..
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Адаптация шаблона
« Ответ #21 : 14.03.2011, 21:02:49 »
jimport в Joomla это аналог инклуда в PHP (require_once), просто в нем используются директории относительно библиотек Joomla (папка libraries)
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

waw555

  • Захожу иногда
  • 118
  • 2 / 0
Re: Адаптация шаблона
« Ответ #22 : 15.03.2011, 14:34:36 »
Можно закрывать.

Всем спасибо за участие, помогло!

С уважением, Алексей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Адаптация картинок и logoheader

Автор saks1959

Ответов: 1
Просмотров: 901
Последний ответ 24.10.2023, 22:55:03
от beliyadm
Изменение шаблона Joomla! 2.5.24

Автор SecondPC

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

Автор dynamit

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

Автор Mirotvoretz

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

Автор nekitko

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