Переменные Drupal - неправильно печатает путь - PullRequest
1 голос
/ 13 июля 2010

Я пытаюсь создать переменную для кнопки редактирования. В template.php я поместил этот код

function phptemplate_preprocess_node(&$vars) {

if ($user->uid == $node->uid || in_array('moderator', array_values($user->roles))|| $user->uid == 1){
     $vars['edit'] =  l('Edit', 'node/' . $node->nid . '/edit');          
   }
}

Затем я печатаю $ edit в файле tpl. Он печатает ссылку для редактирования, но URL выглядит так: "node / 2% Fedit". Что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 13 июля 2010

Как указало abhaga, переменная $ node не объявлена.В препроцессорах они установлены как $ vars ['node']

В вашем случае код будет:

function phptemplate_preprocess_node(&$vars) {

if ($user->uid == $node->uid || in_array('moderator', array_values($user->roles))|| $user->uid == 1) {
     $node = $vars['node'];
     $vars['edit'] =  l('Edit', 'node/' . $node->nid . '/edit');          
   }
}
1 голос
/ 13 июля 2010

Если ваш код предназначен только для того, чтобы показывать кнопку «Редактировать» тому, кто создал этот узел, существует гораздо более простой способ сделать это с правами доступа.

Отключите Администрирование узлов для ролей и назначьте более детальные разрешения «редактировать любые», «редактировать собственные» и т. Д. Для ролей. Это позволит добиться того, что вы хотите сделать без необходимости кодирования.

Таким образом, кто-то в роли Модератора может - только - редактировать созданный ими узел, и вы можете указать его для разных типов контента.

Если речь идет о перемещении элементов $ tabs / $ tabs2, я считаю, что для них существует функция создания тем.

1 голос
/ 13 июля 2010

Это node/2%Fedit или node/%2Fedit?%2F / закодировано как HTML-сущность.Кажется, ваш $node->nid по какой-то причине пуст.У вас есть $node в наличии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...