Добрый день. Никак не могу разобраться в чем дело. Сделал простенький шаблон (в приложении). Добавил только один вывод модуля: Index.php Код (PHP): <?php defined('_JEXEC') or die('Restricted access'); ?><!DOCTYPE HTML> <html> <head> <jdoc:include type="head" /> <link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/style/style.css"/> </head> <body> <div id="wrapper"> <div id="main"> <div id="header"> <jdoc:include type="modules" name="main_menu" style="xhtml"/> > </div> <div id="content"> <jdoc:include type="component" /> </div> <div style="clear: both"> </div> <div id="footer"><pТелефон</p> </div> </div> </div> </body> </html> templateDetails.xml Код (PHP): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install PUBLIC "-//Joomla! 3/0//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/3.0/template-install.dtd"> <extension version="3.0" type="template" client="site" method="upgrade"> <name>site</name> <version>1.0</version> <creationDate>07.04.2013</creationDate> <author>author</author> <authorEmail>authorEmail</authorEmail> <copyright>Copyright (C) 2013. All rights reserved.</copyright> <description>Шаблон</description> <files> <folder>style</folder> <folder>images</folder> <folder>html</folder> <filename>index.php</filename> <filename>favicon.ico</filename> <filename>templateDetails.xml</filename> </files> <positions> <position>main_menu</position> </positions> </extension> Установился шаблон без проблем, но когда захожу в менеджер модулей напротив пункта выбора места модуля написано Warning: Invalid argument supplied for foreach() in Xhome\localhost\www\project\administrator\components\com_modules\views\module\tmpl\edit_positions.php on line 31 Так как в PHP не силен, привожу сам edit_positions.php (Строки с 24 по 44): Код (PHP): // Add positions from templates $isTemplatePosition = false; foreach ($templates as $template) { $options = array(); $positions = TemplatesHelper::getPositions($clientId, $template); foreach ($positions as $position) { $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']'; $options[] = ModulesHelper::createOption($position, $text); if (!$isTemplatePosition && $this->item->position === $position) { $isTemplatePosition = true; } } $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options); } Ругается на 31 строку - Код (PHP): foreach ($positions as $position) Скрин админки -http://joxi.ru/NmxkUdg5CbDjW_WmiWo Подскажите, что не так и как это исправить?
Код (PHP): ... <jdoc:include type="modules" name="main_menu" style="xhtml"/> > ... Во-первых, посте указания стиля выводя модуля (style="xhtml"), в соответствии со стандартами XML , перед слэшем ставится пробел. Во-вторых, после позиции модуля лишняя закрывающая скобка. Ну и в конце концов - попробуйте указать позицию модуля без стиля...
1. Убрал лишнюю закрывающую скобку 2. Убрал стиль из позиции модуля 3. Деинсталлировал шаблон 4. Поставил заново Все по прежнему Создал шаблон Artesteer 4.1 - все ок. Шаблон установился нормально. Новые модули вставляются, но: Ошибка не исчезла - Warning: Invalid argument supplied for foreach() in Xhome\localhost\www\project\administrator \components\com_modules\views\module\tmpl\edit_positions.php on line 31. Подскажите как от этого избавиться?
Решил все-таки самостоятельно написать шаблон. Все никак не могу понять почему же нет возможности выбора позиции для вывода модуля... Хотя через ?tp=1 он показывается. Есть ли у кого какие на этот счет соображения?
В том то вся и загвоздка, что указана: Код (CODE): <positions> <position>main_menu</position> </positions>
В том то и дело, что строка для вписывания не появлялась! Короче, проблема решилась очень неожиданно. Оказывается, если в шаблоне только одна (!) позиция, то это вызывает ошибку! Я добавил ради эксперимента, еще одну позицию, и (о, чудо!): 1. Админка стала как полагается отображать все позиции index.php и tempateDetails; 2. Исчезла ошибка edit_positions. Всем спасибо, кто вступил в дискуссию