Ошибка позиции при установке собственного шаблона

Discussion in 'Создание шаблона' started by Stanly, Apr 9, 2013.

  1. Offline

    Stanly Недавно здесь

    Joined:
    Apr 2, 2013
    Messages:
    17
    Likes Received:
    0
    Gender:
    Male
    Добрый день. Никак не могу разобраться в чем дело.

    Сделал простенький шаблон (в приложении). Добавил только один вывод модуля:

    Index.php
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. ?><!DOCTYPE HTML>
    4. <html>
    5. <head>
    6.  <jdoc:include type="head" />
    7.  <link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/style/style.css"/>
    8. </head>
    9.  
    10. <body>
    11.  
    12. <div id="wrapper">
    13.     <div id="main">
    14.         <div id="header">
    15.             <jdoc:include type="modules" name="main_menu" style="xhtml"/>
    16.             >
    17.         </div>
    18.     <div id="content">
    19.         <jdoc:include type="component" />
    20.     </div>
    21.     <div style="clear: both">
    22.     </div>
    23.     <div id="footer"><pТелефон</p>
    24.      </div>
    25.     </div>
    26. </div>
    27.  
    28. </body>
    29. </html>


    templateDetails.xml
    Код (PHP):
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <!DOCTYPE install PUBLIC "-//Joomla! 3/0//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/3.0/template-install.dtd">
    3. <extension version="3.0" type="template" client="site" method="upgrade">
    4.    
    5.     <name>site</name>
    6.     <version>1.0</version>
    7.     <creationDate>07.04.2013</creationDate>
    8.     <author>author</author>
    9.     <authorEmail>authorEmail</authorEmail>
    10.     <copyright>Copyright (C) 2013. All rights reserved.</copyright>
    11.     <description>Шаблон</description>
    12.    
    13.     <files>
    14.         <folder>style</folder>
    15.         <folder>images</folder>
    16.         <folder>html</folder>
    17.         <filename>index.php</filename>
    18.         <filename>favicon.ico</filename>
    19.         <filename>templateDetails.xml</filename>
    20.     </files>
    21.    
    22.     <positions>
    23.         <position>main_menu</position>
    24.     </positions>
    25.    
    26. </extension>


    Установился шаблон без проблем, но когда захожу в менеджер модулей напротив пункта выбора места модуля написано Warning: Invalid argument supplied for foreach() in X:\home\localhost\www\project\administrator\components\com_modules\views\module\tmpl\edit_positions.php on line 31

    Так как в PHP не силен, привожу сам edit_positions.php (Строки с 24 по 44):
    Код (PHP):
    1. // Add positions from templates
    2. $isTemplatePosition = false;
    3. foreach ($templates as $template)
    4. {
    5.     $options = array();
    6.  
    7.     $positions = TemplatesHelper::getPositions($clientId, $template);
    8.     foreach ($positions as $position)
    9.     {
    10.         $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']';
    11.         $options[] = ModulesHelper::createOption($position, $text);
    12.  
    13.         if (!$isTemplatePosition && $this->item->position === $position)
    14.         {
    15.             $isTemplatePosition = true;
    16.         }
    17.     }
    18.  
    19.     $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options);
    20. }


    Ругается на 31 строку -
    Код (PHP):
    1. foreach ($positions as $position)

    Скрин админки -http://joxi.ru/NmxkUdg5CbDjW_WmiWo

    Подскажите, что не так и как это исправить?
     

    Attached Files:

  2.  
  3. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Код (PHP):
    1. ...
    2. <jdoc:include type="modules" name="main_menu" style="xhtml"/>
    3.  
    4. >
    5. ...

    Во-первых, посте указания стиля выводя модуля (style="xhtml"), в соответствии со стандартами XML , перед слэшем ставится пробел.
    Во-вторых, после позиции модуля лишняя закрывающая скобка.
    Ну и в конце концов - попробуйте указать позицию модуля без стиля...
     
  4. Offline

    Stanly Недавно здесь

    Joined:
    Apr 2, 2013
    Messages:
    17
    Likes Received:
    0
    Gender:
    Male
    1. Убрал лишнюю закрывающую скобку
    2. Убрал стиль из позиции модуля
    3. Деинсталлировал шаблон
    4. Поставил заново

    Все по прежнему :(

    Создал шаблон Artesteer 4.1 - все ок. Шаблон установился нормально. Новые модули вставляются, но:
    Ошибка не исчезла - Warning: Invalid argument supplied for foreach() in X:\home\localhost\www\project\administrator
    \components\com_modules\views\module\tmpl\edit_positions.php on line 31
    .

    Подскажите как от этого избавиться?
     
    Last edited: Apr 10, 2013
  5. Offline

    Stanly Недавно здесь

    Joined:
    Apr 2, 2013
    Messages:
    17
    Likes Received:
    0
    Gender:
    Male
    Решил все-таки самостоятельно написать шаблон.
    Все никак не могу понять почему же нет возможности выбора позиции для вывода модуля...
    Хотя через ?tp=1 он показывается.

    Есть ли у кого какие на этот счет соображения?
     
  6. OlegM
    Offline

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Позиция не указана в templateDetails.xml?
     
  7. Offline

    Stanly Недавно здесь

    Joined:
    Apr 2, 2013
    Messages:
    17
    Likes Received:
    0
    Gender:
    Male
    В том то вся и загвоздка, что указана:

    Код (CODE):
    1. <positions>
    2.         <position>main_menu</position>
    3.     </positions>
     
  8. OlegM
    Offline

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Тогда просто впиши его.
     
  9. Offline

    Stanly Недавно здесь

    Joined:
    Apr 2, 2013
    Messages:
    17
    Likes Received:
    0
    Gender:
    Male
    В том то и дело, что строка для вписывания не появлялась!

    Короче, проблема решилась очень неожиданно. Оказывается, если в шаблоне только одна (!) позиция, то это вызывает ошибку!
    Я добавил ради эксперимента, еще одну позицию, и (о, чудо!):

    1. Админка стала как полагается отображать все позиции index.php и tempateDetails;
    2. Исчезла ошибка edit_positions.

    Всем спасибо, кто вступил в дискуссию:)
     

Share This Page

Loading...