Доброй ночи.
У меня вопрос - какая у меня ошибка в коде, я не могу добавить данные в свою "$_session['name']. Каждый раз у меня выходит лишь "reload" в echo $_SESSION['b'];
без друпала скрипт работает.
<?
//session_start();
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);echo $_SESSION['b'];
if ($_SESSION['b']=='reload'){ $_SESSION['b']='';} else {
$_SESSION['href1']='';
}if ($_SESSION['href1']==''){
$reload='reload'; $_SESSION['b']=$reload;
?>
далее какой то html в перемешку с jquery и тп
<? } else {
?>
снова куча ненужного кода
<? } drupal_session_commit(); ?>
Комментарии
* In order to bootstrap Drupal from another PHP script, you can use this code:
* @code
* define('DRUPAL_ROOT', '/path/to/drupal');
* require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
* drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
* @endcode
/path/to/drupal - полный путь? у меня скрипт лежит в корне сайта, в месте с DR7 и открывается через include('./index3.php'); прописанном в одной статье.(открывается в теле ноды)
Notice: Constant DRUPAL_ROOT already defined в функции include() (строка 3 в файле x:\AppServ\www\gallery.php). - я тоже так по началу добавлял..
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
Notice: Undefined index: superpuper в функции include() (строка 6 в файле x:\AppServ\www\gallery.php).
Notice: Constant DRUPAL_ROOT already defined в функции include() (строка 2 в файле x:\AppServ\www\gallery.php).
начало файла:
<?
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
if ($_SESSION['superpuper']=='reload'){ $_SESSION['superpuper']=''; echo 'CLEAR';} else {
$_SESSION['href1']=''; echo 'NO';
}
if ($_SESSION['href1']==''){
$_SESSION['superpuper']='reload ';
?>
сам скрипт отображается через ноду. В ноде%
<? include("gallery.php"); ?>
может есть какой плагин? у меня скрипт - в одном файле и что во фрейме его отображать, что прямо в ноду вписать. Он будет работать. Проблема лишь с сессиями..
- Сделайте простенький модуль с помощью http://drupal.org/project/module_builder
- делайте в папке модуля файл mymodule.inc и поместите туда нужные функции и объекты
- используйте для обращения по url hook_menu( в модуле mymodule.module или module_load_include для вызова функций из других *.module
можно поподробнее, на данный момент я там вижу два больших текстовых поля:
module headler
module footer
простите за идиотский вопрос но куда мне вставлять то свой код?
зы одним глазом пока читаю доки..
попытался создать первый плагин, потыкав галочки для интереса.
вылезла ошибка:
Fatal error: Call to undefined function drush_print_r() in x:\AppServ\www\sites\all\modules\module_builder\includes\generate.inc on line 480
вообщем нашел выход в том, что прописал все это дело в шаблоне .tpl.php
пока писал - нашел ошибку в коде. Спал мало, не сразу понял - суть в том, что у меня ссесия очищается, не успев сработать как то так.
спасибо за плагин
вроде заработало как надо, без подобных наворотов.
теперь новая проблема (уже надоели палки в колеса)
в этой странице есть:
<?
for ($i=1;$i<=10;$i++){
if (is_dir("image/release/album".$i)){ ?>
<div class="one_album <?= $i ?>"><a href="/release/album<?= $i ?>/" onclick="return false;"><img src="imgsize.php?src=image/release/album<?= $i ?>/oblojka.jpg&w=200&h=200&zc=2"></a></div>
<? } } ?>
</div>
внутри страницы есть js
$(".one_album").click(function(){
var v1=$(this).children("a").attr("href");
$.post("/ajax/session.php", {z1:v1}, function(res){
//alert(v1);
location.reload();
});
так вот чем заменить $.post("/ajax/session.php", {z1:v1}, function(res) - что бы запрос ушел?
Если честно - от недосыпа я уже сломал просто мозг с друпал апи. разжуйте пожалуйста.
type: 'POST',
data: { op: 'action', type: 'make_photo_main', val: rel },
url:'/my_module/ajax',
...
// ajax post function
$items["my_module/ajax"] = array(
'page callback' => 'my_module_ajax',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
...
return $items;
}
function my_module_ajax(){
...
global $user;
if(isset($_POST['op'] ...
$output = array('status' => $status, 'data' => $data);
drupal_json_output($output);
}
у меня страница http://site.ru/?q=gallery
и далее был написан page--gallery.tpl.php
в котором висит самописный скрипт галереи в
скрипт писал не я. Ибо я ajax знаю плохо.
суть не в том, что делать в этом случае?
Мне то надо по клику на ссылку тупо вписать нужную ссылки(albumX и podalbumY) в сессию.
у меня паника. друпал что же и сторонние php get запросы не умеет читать без напильника?)
используте $_GET
<?
$url = $_SERVER["REQUEST_URI"];
$_SESSION['href1']=$_GET['type'];
$_SESSION['href2']='album'.$_GET['album'];
далее ссылка с $_get
for ($i=1;$i<=10;$i++){
if (is_dir("image/release/album".$i)){ ?>
<div class="one_album <?= $i ?>"><a href="<?=$url ?>?type=release&album=<?= $i ?>" .....
ежели скрипт идет отдельно от друпала - все ок, работает как надо.
если в друпале
Ошибка:
Notice: Undefined index: type в функции include() (строка 216 в файле x:\AppServ\www\sites\all\themes\manko\templates\page--gallery.tpl.php).
Notice: Undefined index: album в функции include() (строка 217 в файле x:\AppServ\www\sites\all\themes\manko\templates\page--gallery.tpl.php).
Страница "/?q=gallery?type=release&album=1" не найдена.
Если в адресной строке вручную вбить
http://site.ru/?q=gallery?type=release&album=1
тоже самое.
А вы говорите, что работает..
Linux проще настроить, чем эту кмс. Просто везде грабли. Есть в природе плагин, позволяющий добавить свой php скрипт с ajax, с возможностью работы с сессией друпаши?
Или, можно хотя бы последовательность действий? Типо создаете модуль, добавляете туда хук (какой код хука), как перехватить это дело в скрипте.
Я только начинаю изучать азы веб программирования, сильно не серчайте.
спасибо, виновата моя невнимательность. но все равно остался нерешенным вопрос с ajax.
есть событие по клику в альбоме.
$(this).children("div").css('opacity','0');
$(".one_small").not(this).children("div").css('opacity','0.5');
var v1=$(this).children("a").attr("href");
$(".all_gros").css('opacity','0');
$.post("/ajax/session2.php", {z1:v1}, function(result){
aler(v1);
res=result.split('//-//');
$(".all_gros").html(res[0]);
$("#hr1").val(res[1]);
$("#hr2").val(res[2]);
$("#kiko").val(res[3]);
});
$(".all_gros").animate({
opacity: "1"
}, 1000);
});
подскажите пожалуйста, как это переписать, что бы работало с апи друпала?
По поводу /ajax/session2.php - писал Выше как обращаться к функции PHP для обработки и возврата результата, остальное jQuery - подключен по умолчанию, и не забывает что .click - переопределяет, если на Вашем селекторе уже повешены какие то другие .click другими модулями, то надо .bind или .live использовать.