Возьмите данные из поля из существующего узла и сделайте это значение по умолчанию для поля в другом типе содержимого.

Я не знаю, на правильном ли я пути, но я пытаюсь позволить пользователям моего веб-сайта создавать собственные версии страниц на моем веб-сайте. По сути, я хотел бы использовать нашу документацию в качестве отправной точки, где они просто добавляют детали и создают для себя новую страницу в процессе. У меня есть тип контента «книга», который я изменил с помощью CCK, и тип контента «редактирует клиент», который использует виджет nodereferencefromURL для связывания себя с узлом книги.

Очень простая версия того, что я говорю, - у меня есть ссылка на страницах моей книги, которая создает узел с использованием типа содержимого, редактируемого клиентом. Я хотел бы разместить несколько полей в типе содержимого, редактируемом клиентом, которые принимают значения некоторых полей со страницы книги, с которой он связан.

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

Все, что мне действительно нужно, это указать в правильном направлении, если мое текущее мышление неверно. В настоящее время я считаю, что я использую php-скрипт для получения значения по умолчанию для поля на экране добавления нового узла, который перетаскивает значение для поля из книги, из которой я ссылаюсь. Я думаю, что это так, потому что есть опция для значений по умолчанию для поля в cck manage fields, которая позволяет вам ввести значение php, чтобы вернуть значение по умолчанию для вашего поля.

Я на правильном пути, или уже есть модуль или процесс, который делает то, о чем я говорю, и я слишком туп, чтобы его найти.


person Paul    schedule 02.07.2010    source источник


Ответы (2)


Это звучит немного странно, будут ли изменения вашего клиента отличаться от исходного узла или просто скопированы данные?

Я бы, возможно, сделал это более простым способом, просто имел бы узлы книг и разные поля, в зависимости от того, кто их редактирует (включите модуль content_permissions). Таким образом, вы можете использовать модуль node clone для создания пользовательской копии.

Вам нужно будет создать модуль, содержащий ваш собственный PHP-код.

person Jeremy French    schedule 02.07.2010
comment
Ранее на этой неделе я коснулся клона узла, потому что меня больше интересовали копирование полей, а не всего узла, но я не учел разрешения. Постараюсь, чтобы посмотреть, как оно идет. Спасибо. да, они будут отличаться от оригинала, поскольку наша программа, кажется, используется тысячами различных способов в зависимости от клиента, поэтому им необходимо персонализировать нашу документацию для себя и своих сотрудников. - person Paul; 02.07.2010
comment
Кроме того, пользователь не должен иметь возможность изменять исходный документ, поэтому, если клонирован, означает ли это, что у них не будет разрешения на редактирование нового документа, а поле будет таким же, как я думаю? Я попытаюсь. - person Paul; 02.07.2010
comment
Разрешения могут быть установлены таким образом, чтобы группы пользователей могли редактировать только свои собственные экземпляры чего-либо, а не каждый экземпляр, так что все должно быть в порядке. - person Jeremy French; 02.07.2010
comment
К сожалению, этот ответ - не тихий путь. Node clone - хороший модуль, и разрешения работали так, как вы указали, поэтому спасибо за то, что научили меня больше, прежде чем я укажу, почему исправление не помогло мне перебороть черту. Проблема в том, что когда вы клонируете узел, нет возможности сослаться на клон обратно на исходный документ. Мне нужно это сделать. - person Paul; 16.07.2010
comment
Моя главная страница документации разбита на разные части. 1. Вкладка для оригинального документа, который я и мои сотрудники готовим для клиентов. Эту вкладку просматривают мои прямые клиенты. 2. Вкладка для клона оригинала, которую мои клиенты готовят для своего персонала. Эта вкладка будет достаточно легко отфильтрована на основе клиента, но без какой-либо ссылки на узел между исходным идентификатором узла и клоном, как мне отфильтровать его, чтобы вызывался правильный клон и только правильный клон. надеюсь, это имеет смысл. Вот почему я изначально попробовал nodereference. Еще раз спасибо за оригинальный ответ. - person Paul; 16.07.2010

В итоге я использовал правила для сохранения информации от пользователя и клонированного узла в скрытые поля. Тот, который сохранял исходный идентификатор узла в поле, когда вы когда-либо создавали контент этого типа, если URL-адрес не заканчивается на Clone. Это означает, что при создании клона исходный идентификатор узла сохраняется в поле. Это упростило использование аргумента views, который принимает идентификатор узла, чтобы клон отображался рядом с оригиналом, когда пользователь посещает исходную страницу. Второй трюк с правилом заключался в том, чтобы вычислить поле, сохраняющее «имя магазина» из профиля пользователя только при сохранении клонированного содержимого. Это означало, что на клоне было скрытое поле, в котором хранилась информация, поэтому я мог затем использовать другой аргумент представления, чтобы ограничить представление только людьми с тем же именем магазина в их профиле. Я плохо разбираюсь в PHP, но мне удалось найти фрагмент (не помню, где), который возвращает имя магазина текущего вошедшего в систему пользователя в качестве аргумента.

global $user;

profile_load_profile($user);

return $user->profile_store_name;

person Paul    schedule 29.07.2010