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

kowap

  • Новичок
  • 3
  • 0 / 0
вообщем, такая проблема. есть модуль, называется PHP mod. с его помощью можно вставлять на страницы php код. и у меня есть файл обработчик, который сохраняет значения в переменные сессии. то есть: на странице Joomla, с помощью phpmod мы на страницу вставляем например такое:
Код
<?
echo $_SESSION["value"];
?>
<form method = "post" action = "go.php">
<input type = "text" name = "text">
<input type = "submit" name = "ok">
</form>

а теперь создаем свой файл php. и в нем пишем
Код
<?
session_start();
$_SESSION["value"] = $_POST["text"];
header("Location: /ссылка обратно")
?>

объясняю.
в первом куске, который мы вставили на страницу с помощью модуля phpmod, мы заполняем поле text, нажимаем отправить, и нас переносит на созданный нами php файл. в нем открывается сессия, и в эту сессию сохраняется переменная $_SESSION["value"] в которую мы записали значиние веденное в форму ранее. по всем законам, при выводе $_SESSION["value"] на любой странице сайта, должно отображаться ее содержимое. но тут и проблема, в сессию ничего не сохраняется, то есть, на всех страницах сайта переменная $_SESSION["value"] будет пустая.

нашел ответ на вопрос. что бы в Joomla что то записать в сессию и что то выбрать, нужно делать это с помощью следующего блока кода
Код
$session =& JFactory::getSession(): 
// Выбор
$var = $session->get('key');
// Запись
$session->set('key', 'value');

проблема вроде и решена, но как записать это в моем файле? например такое $session =& JFactory::getSession(): работать вроде не будет, так как библиотеки Joomla не подключены к моему файлу. и вот вопрос, что и как нужно подключить в мой новый php файл, что бы работала эта конструкция
Код
$session =& JFactory::getSession(): 
// Выбор
$var = $session->get('key');
// Запись
$session->set('key', 'value');
*

googlonator

  • Осваиваюсь на форуме
  • 24
  • 1 / 0
Тоже сейчас мучаюсь с подключение собственного скрипта и сессиями. Прочитал что надо вот это прописать:
Код
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
$path = JPATH_BASE . DS . 'includes' . DS;
// once использовать необязательно, не думаю, что вы подключите файлы фреймворка дважды
require($path . 'defines.php');
require($path . 'framework.php');
$app = JFactory::getApplication('site');
$app->initialise();

В строке
 
Код
define('JPATH_BASE', dirname(__FILE__));

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

Но вот у меня беда, после добавления этого кода перестает вообще выполняться скрипт. Строки эти правильные, я уверен. В чем проблема не пойму.
*

googlonator

  • Осваиваюсь на форуме
  • 24
  • 1 / 0
Разобрался и все заработало! В начале приведенного выше мною кода, добавил
Код
define( '_JEXEC', 1 );

В исполняемом отдельно скрипте для проверки вставил
Код
$session =& JFactory::getSession();
$session->set('hello', 'blin');

А в файле index.php моего шаблона
Код
$session =& JFactory::getSession();
 echo $session->get('hello');
 

И вуаля, на страницах сайта стало выводится слов blin которое было занесено в сессию в отдельном от Joomla скрипте.
*

EndVal

  • Захожу иногда
  • 54
  • 10 / 0
Разобрался и все заработало! ....
Всегда ли заработает? Для Joomla 3.x вы создаете файл в корне CMS, что неверно и не логично, если взглянуть со стороны модуля.
Файл должен лежать внутри каталога модуля, что правильно. Разбираю КАСАТЕЛЬНО ТОЛЬКО МОДУЛЯ - ВНИМАТЕЛЬНО!

Тогда JPATH_BASE выдаст совсем другой путь при define('JPATH_BASE', dirname(__FILE__));
Например, пусть сайт будет NAME_OF_SITE, внутри модуль в MODULES\MOD_NAMEOFMODULE - вот здесь будет наш файл например, score.php,
.....NAME_OF_SITE\MODULES\MOD_NAMEOFMODULE/score.php

Тогда define('JPATH_BASE', dirname(__FILE__)); выдаст типа:
Warning: require_once.......NAME_OF_SITE\MODULES\MOD_NAMEOFMODULE/includes/defines.php): failed to open stream...... (сокращенно написал),
кстати, про эту ошибку спрашивали, почему появляется когда require_once падает.

Выделил заглавными MODULES\MOD_NAMEOFMODULE - появится это лишнее,
естественно строка $path = JPATH_BASE . DS . 'includes' . DS; выдаст совсем другой путь и
require($path . 'defines.php'); require($path . 'framework.php'); - не загрузятся.

Решение: убрать MODULES\MOD_NAMEOFMODULE из PATH_BASE
define('JPATH_BASE', dirname(__FILE__)); заменить на define( 'JPATH_BASE', __DIR__ . '/../../' ); - тогда все includes подключатся

dirname(__FILE__) - это месторасположение файла, .дает...NAME_OF_SITE\MODULES\MOD_NAMEOFMODULE/includes/....
define( 'JPATH_BASE', __DIR__ . '/../../' ); дает ....NAME_OF_SITE\includes/ что верно для загрузки includes

обратите внимание на  __DIR__ . '/../../' переход на верхние уровни

Надеюсь, что понятно, через var_dump - поисследуйте, тогда все поймете
« Последнее редактирование: 13.02.2016, 07:14:15 от EndVal »
*

buyanov

  • Захожу иногда
  • 188
  • 28 / 1
  • Сайты 74
Привет, но попахивает чем-то не хорошим прям сразу!
Переопределять JPATH_BASE как-то грешновато по моему ^-^

А сторонние библиотеки лучше ставить с помощью composer (это на время разработки например), а если собрать модуль то уже можно туда засунуть папочку вендор например.
У Joomla есть прекрасный класс JLoader.

Вот пример подключения mtHaml библиотеки

Код: php
JLoader::registerNamespace('MtHaml', JPATH_THEMES . '/blank_j3/lib/vendor/mthaml/mthaml/lib');
JLoader::register('JHaml', JPATH_THEMES . '/blank_j3/_php/utility/haml.php');

тут blank_j3 это мой шаблон, в нем все и лежит. Подозреваю что с модулем будет все похоже.
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Миграция на Joomla с другой CMS

Автор cntrl

Ответов: 5
Просмотров: 432
Последний ответ 05.09.2020, 00:34:40
от effrit
Руководство пользователя Joomla! 2.5 + 10 легких шагов к освоению Joomla! 3 (книги в pdf)

Автор Marques

Ответов: 66
Просмотров: 183429
Последний ответ 07.08.2020, 11:00:23
от AlexB
[РЕШЕНО] Как в Joomla 2.5 автоматом удалять пользователей, не активировавшихся?

Автор pH43

Ответов: 2
Просмотров: 731
Последний ответ 01.06.2020, 17:16:26
от pH43
Скачивание файла после внесения контактных данных Joomla 2.5.11?

Автор marketingMLS

Ответов: 0
Просмотров: 1265
Последний ответ 11.03.2020, 17:25:39
от marketingMLS
Проблема со страницей "Общие настройки" - Joomla 2.5

Автор sultan7

Ответов: 20
Просмотров: 1466
Последний ответ 20.10.2019, 18:24:21
от sultan7