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

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Здравствуйте.
На своем компьютере с Windows 7 разрабатываю внутренний сайт предприятия. Поставил Joomla 3.6.5, на нее PhocaGallery v4.3.4. Сразу же после установки открывается панель управления с кучей предупреждений такого типа:
Warning: Illegal string offset 'name' in C:\Aache24\htdocs\administrator\components\com_phocagallery\libraries\phocagallery\render\renderinfo.php on line 3
Все предупреждения на третьей строке в файле renderinfo.php. В чем может быть дело? Может быть что-то не включено в настройках PHP или Apache?
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
А что там, в этой строке 3? Обращение к элементу массива? Предполагаю, что при вызове в массиве нет ключа 'name'.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Код
$xml_items[$key] = $value;
- на этой операции предупреждения выводятся.
Судя по именам переменных, о которых сообщается (name, type, creationDate, author, copyright, authorEmail, authorURL, version, description, group, filename) и названии функции, где эта операция выполняется (getPhocaVersion), сообщения выдаются при попытке сообщить информацию об используемой версии галереи.
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Странная строка, если вы взяли ее из оригинального файла. К сожалению, нет возможности скачать и посмотреть галерею, но эта конструкция должна иметь примерно такой вид:
Код: php
$xml_items['name'] = 'Phoca Gallery';

Смотрите, что там перед этой строкой, возможно, явно нужно задать ключ 'name' массива и его значение.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Привожу полный текст процедуры с описанными предупреждениями:
Код
function getPhocaVersion() {
   $folder = JPATH_ADMINISTRATOR .DS. 'components/com_phocagallery';
   if (JFolder::exists($folder)) {
      $xmlFilesInDir = JFolder::files($folder, '.xml$');
   } else {
      $folder = JPATH_SITE .DS. 'components/com_phocagallery';
      if (JFolder::exists($folder)) {
         $xmlFilesInDir = JFolder::files($folder, '.xml$');
      } else {
         $xmlFilesInDir = null;
      }
   }
   $xml_items = '';
   if (count($xmlFilesInDir)) {
      foreach ($xmlFilesInDir as $xmlfile){
         if ($data = JApplicationHelper::parseXMLInstallFile($folder.DS.$xmlfile)) {
            foreach($data as $key => $value) {
               $xml_items[$key] = $value;
            }
         }
      }
   }
   if (isset($xml_items['version']) && $xml_items['version'] != '' ) { return $xml_items['version'];
   } else { return ''; } }
}
Я, конечно, пока не большой знаток PHP, но по-моему строка:
Код
$xml_items = '';
переменную $xml_items очищает от всех данных. Поэтому неудивительно, что при обращении к элементу массива затем происходит предупреждение, в других языках это вообще была бы ошибка. А для PHP это что правильно так писать?
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Не совсем. В самом начале там прописан путь к каталогу компонента. Далее скрипт его пытается открыть и прочитать. $xml_items = ''; - эта строка создает пустую строковую переменную $xml_items. Это неверно, т.к. далее по коду в эту переменную заносится массив. Должно быть так: $xml_items = array();- такая конструкция создает пустой массив. Ну а далее идет загрузка XML в массив. Затем проверяется, есть ли в массиве ключ 'version' и если да, возвращается его значение.  Что то я тут 'name' без очков не вижу...
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Видимо $key последовательно принимает значения 'name', 'type', 'creationDate' и т. д.
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Видимо $key последовательно принимает значения 'name', 'type', 'creationDate' и т. д.
Не последовательно. Это массив, в который из $data заносятся пары ключ=значение. Поставьте под циклом var_dump($xml_items); и увидите его содержимое.
« Последнее редактирование: 16.02.2017, 17:35:28 от SeBun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Замена
Код
$xml_items = '';
на
Код
$xml_items[$key] = $value;
исключила вывод предупреждений при открытии панели управления Phoca, спасибо SeBun. Однако, создал категорию, попробовал добавить фотографию и появились новые предупреждения, на другие уже переменные. Мне, что теперь и для них исходный код галереи изменять? Может рассмотреть какую-то более разработанную галерею?
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Я советовал заменить на
Код: php
 $xml_items = array(); 
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

bdv1983

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Я советовал заменить на
Код: php
 $xml_items = array(); 
Да, конечно, описка. Прошу прощения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

PhocaGallery

Автор rezchik

Ответов: 6
Просмотров: 573
Последний ответ 07.01.2024, 16:59:36
от SeBun
Русификация PhocaGallery 3 и 4 для Joomla 2.5\3.0

Автор HiopsNerevar

Ответов: 118
Просмотров: 95488
Последний ответ 11.03.2022, 16:24:13
от sergeytolkachyov
Сортировка категорий в столбцах/колонках PhocaGallery 3.2.2

Автор remix8080

Ответов: 0
Просмотров: 1514
Последний ответ 20.06.2021, 17:09:27
от remix8080
PhocaGallery 2.8.1 для Joomla 1.5

Автор iGoldSilver

Ответов: 3
Просмотров: 1699
Последний ответ 16.12.2020, 10:10:17
от iGoldSilver
PhocaGallery 4.1.2 убрать копирайт

Автор Sergey-N81

Ответов: 15
Просмотров: 13327
Последний ответ 30.11.2020, 04:07:12
от DarkDiver