Как узнать урл страницы (php в блоке)

Главные вкладки

Аватар пользователя Dope Skeeza Dope Skeeza 28 февраля 2009 в 22:19

Мне нужно что бы в блоке выводился урл текущей страницы сайта.
Поиск дал только информацию о переменной $_GET['q'], но вот как и с чем её применять?
Либо может я вообще не туда искал... поправьте или подскажите плз!

Комментарии

Аватар пользователя Dope Skeeza Dope Skeeza 1 марта 2009 в 1:43
<?php print(l('Сцылко', $_GET['q'])); ?>

а вот выводит этот код мне node/1 node/2 node/3 ... можно как то сделать так, что бы он выводил урл словами (стоит pathauto)?

Аватар пользователя neochief neochief 1 марта 2009 в 22:21

Оно не может глючить, у вас 100% где-то лопухи. Если подавать ему на вход строку 'node/%', где % — айдишка, оно должно работать.

Аватар пользователя Dope Skeeza Dope Skeeza 1 марта 2009 в 22:38

да.. я что то не туда копаю..
<?php print url('node/', $_GET['q']); ?> - дошел до такой комбинации, но опять же ничего не выводится по человечески

Аватар пользователя iryston iryston 1 марта 2009 в 23:53

Да Dope Skeeza прав, не выходит каменная чаша.
выводится только часть урл которая после названия сайта идет, и то без синонимов.

Аватар пользователя iryston iryston 2 марта 2009 в 9:29

"neochief" wrote:
<?php print url($_GET['q']); ?>

neochief, спасибо! Так показывает синоним "/en/about" А как впереди добавить урл сайта?

Аватар пользователя Dope Skeeza Dope Skeeza 2 марта 2009 в 11:48

а что нужно поменять , что бы не выводился слеш / перед синонимом?
мне для flashvars нужно получить чистое имя страницы, без лишних символов.

Аватар пользователя iryston iryston 2 марта 2009 в 23:46

В общем, сделал так (может и неправильно, но работает):

в template.php

function show_constant_link() {
$out = url($_GET['q'], array('absolute'=>TRUE));
return $out;
}

в node.tpl.php

<?php if ($page): ?>
<a href="<?php print show_constant_link(); ?>"><?php print show_constant_link(); ?></a>
<?php endif; ?>
Аватар пользователя neochief neochief 3 марта 2009 в 0:29

eagle, не знаю почему вы все не скомпоновали, раз уже все заработало

<?php if ($page): ?>
<?php l(url($_GET['q'], array('absolute' => TRUE)), $_GET['q']); ?>
<?php endif; ?>

И почитайте доки на эти функции, чтобы не было вопросов почему работает/не работает.

Dope Skeeza, мой предыдущий коммент был вам.

Аватар пользователя Dope Skeeza Dope Skeeza 3 марта 2009 в 1:15

да, но я не могу дойти, как мне испрвить этот код

<?php
function drupal_get_path_alias($path, $path_language = '') {
$result = $path;
if ($alias = drupal_lookup_path('alias', $path, $path_language)) {
$result = $alias;
}
return $result;
}
?>

так что бы убрался слеш Sad так не получилось

if ($alias = drupal_lookup_path('', 'alias', $path, $path_language)) {
Аватар пользователя iryston iryston 3 марта 2009 в 2:57

"neochief" wrote:
не знаю почему вы все не скомпоновали, раз уже все заработало

Потому что я еще только учусь, при наличии свободного времени.

Спасибо за подсказки!

Аватар пользователя beerman beerman 17 марта 2009 в 1:57

Атрибут FLASHVARS реализует эффективный способ импорта переменных в клип еще в процессе загрузки. Строка переменных в виде набора пар name=value передается в клип. В клипе соответствующие переменные создаются из полученной строки до начала проигрывания первого кадра.

Синтаксис: Пары name=value в строке переменных должны быть разделены символом амперсанда (&). Спецсимволы могут быть переданы как escape-последовательности (символ процента (%) и следующее за ним двузначное шестнадцатеричное число.) Одиночный пробел можно заменить символом плюса (+).

Атрибут FLASHVARS должен быть указан и в тэге OBJECT, и в тэге EMBED, для работы в разных броузерах. Поддерживается Flash Player 6 и выше. Все броузеры будут поддерживать передачу строк переменных длиной до 64КБ (65535 байт).

Пример с тэгом OBJECT:

<PARAM NAME=FLASHVARS VALUE="foo=Hello%20World&paragraph=first+line%0Dsecond+line">

Пример с тэгом EMBED:

<EMBED src="display.swf" FLASHVARS="foo=Hello%20World&paragraph=first+line%0Dsecond+line" ... (другие параметры)> </EMBED>

Кодировка передаваемой строки переменных совпадает с кодировкой содержащей ее страницы. IE под Windows отвечает за поддержку строк, совместимых с кодировкой UTF-16. Аналогично, Netscape предоставит проигрывателю строку в кодировке UTF-8.

Скорее всего, Вам это надо
<?php print urlencode(url($_GET['q'])); ?>

Аватар пользователя neochief neochief 17 марта 2009 в 15:55

2beerman
url уже делает urlencode Wink

Если нужно без слеша:
<?php print drupal_urlencode(drupal_get_path_alias($_GET['q'])); ?>

А вообще, флешки очень любят абсолютные пути, я на 90% уверен, что проблема в их отсутствии. Как их вывести было показано выше.