Кнопка Добавить материал

Аватар пользователя Olhan Olhan 1 января 2011 в 10:01

Добрый день!

1) Подскажите, как вывести в нужном месте ссылку на форму создания определённого типа материала (а не список всех типов, как через меню), которая бы показывалась только тем, у кого есть права на его создание?

2) Как редактировать горизонтальное контекстное меню? В частности, мне надо, чтобы при просмотре ноды в меню кроме "Редактировать" были ещё пункты "Создать" и "Удалить"?

3) Можно ли подобное меню добавить на страницу, которую формирует Views (надо вывести там пункт "Создать"?)

Комментарии

Аватар пользователя sergip sergip 1 января 2011 в 10:37

1) Создайте новые пункти. Показываться будут и так только тем, кто право имеет создавать.
2) page.tpl.php
3) Не знаю

Аватар пользователя oksoft oksoft 3 января 2011 в 0:02

1) в админке в меню "создать материал" узнаете URL странички создания нужного материала. В "нужном месте" размещаете картинку кнопки и привязываете к ней этот URL. Даже если кнопку увидят все желающие, то зайти на страницу создания материала смогут только те, кто имеет разрешение создавать материал. Если нужно скрыть такую кнопку от тех, кто разрешения не имеет - можно проверять роль юзера и показывать кнопку по результату проверки (это php в ноде) или добавить блок, в котором разместить кнопку, и указать, каким ролям этот блок будет виден (без php, все реализуется из админки друпала)

Аватар пользователя iNFerNo iNFerNo 3 января 2011 в 1:41

это все и чайнику понятно кто знаком хоть как с хтмл

а как одним кодом сделать так что бы добавить кнопку и ссылку на добавить материал к ней для каждого материала - СВОИ индивидуальные. Не хочется изз а одной кнопки для аждого материала создавать свой node-типматериала.tpl.php

Аватар пользователя Olhan Olhan 3 января 2011 в 10:07

Спасибо.

sergip,

Quote:
2) page.tpl.php

В page.tpl.php меню только отображается. А вот где формируется?

oksoft,

Quote:
Если нужно скрыть такую кнопку от тех, кто разрешения не имеет - можно проверять роль юзера и показывать кнопку по результату проверки

А какая переменная отвечает за роль юзера? И какого вида значения она содержит?

И крепко подозреваю, что проверка условий в шаблоне - это всё-таки кривой путь. Наверняка существуют переменные, которые уже содержат нужную ссылку с уже проверенным условием. Во всяком случае, когда через Views добавляешь ссылку редактирования ноды - всё работает само, и показывается кому надо. Но вот ссылок на создание материала с уже проверенным условием не встречал.

А показывать юзерам неработающую кнопку - по меньшей мере невежливо и явно не шедевр веб-дизайна.

Аватар пользователя oksoft oksoft 3 января 2011 в 15:27

iNFerNo

Насколько я понял, нужно чтобы просматривая материал типа "заметка", пользователь мог добавить "заметку", а просматривая материал типа "страница" пользователь по той же кнопке мог добавить материал "страницу"? Если так, то поможет примерно такой код:

<?php

if (arg(0) == 'node' && is_numeric(arg(1))) { 
print 
'<a href="http://ваш_сайт.ru/node/add/';
$nid arg(1); $node node_load(array('nid' => $nid));   
print 
$node->type
print 
'">добавить материал просматриваемого типа</a>';}

?>
Аватар пользователя z-s z-s 30 сентября 2011 в 11:47

Проверка прав пользователей уже реализована в блоках - так что в блок и надо использовать в Views
Сначала думал посоветовать взять файл tpl views - но потом подумал - а зачем - Это статичная ссылка - так и пропишите её код полностью в блоке.

Кстати блок можно взять даже не views'овский - а обычный - создать блок на странице admin/build/block

А если дизайнерски нужно не в блоке - создайте аттач и в файле tpl пропишите статичную ссылку - а дальше там же права назначьте на этот аттач.

Кстати, можно ещё настроить триггер чтобы после добавления материала Вас возвращало на страницу views (но скорее всего придется написать свой модуль чтобы расширить тригер, так как по умолчанию там есть тригер на добавление материала без детализации какого именно. В книге CMS Drupal:руководство по разработке системы управления сайтом - очень понятно на нескольких страницах изложено как это делать)

Вот другой вопрос: КАК НЕ ВЫХОДЯ ИЗ вида Views отобразить форму для создания материала определенного вида ?