2009-10-23 2 views
3

Я унаследовал сайт Druapl5, и он показывает контент, когда он опубликован, не отмечен в разделе «Параметры публикации» в разделе «Редактировать форму содержания».Drupal разрешает просмотр неопубликованного контента

Я подтвердил, что статус 0 в БД для узла. Поэтому это не должно быть видно.

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

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

Когда-либо видели что-нибудь подобное? Есть идеи?

+0

Просматривается Вы узлы непосредственно или как вы можете увидеть их? – googletorp

ответ

3

Вы упомянули в комментарии, что на сайте установлено Content Access. Этот модуль (а также некоторые другие, например ACL) переопределяют механизм доступа к узлу Drupal по умолчанию, чтобы обеспечить дополнительные/более мелкие разрешения.

Поэтому я предполагаю, что конфигурации разрешений в этом модуле настроены неправильно для желаемых результатов. Насколько я помню, он позволяет использовать отдельные наборы разрешений для каждого типа контента (определенные для авторов и ролей). Вы должны посмотреть страницы редактирования/определения типа контента - для настройки разрешений должна быть добавлена ​​вкладка этого модуля. Также проверьте файл readme.txt модуля, так как он может дать некоторые дополнительные подсказки.

Если это не поможет, вы должны проверить, установлены ли другие модули доступа к узлу. Как уже упоминалось, их довольно много, и их взаимодействие непросто определить (нужно стремиться использовать только одно, если это возможно).

+0

только для записи ... это также случилось со мной и закончилось тем, что у меня было 2 модуля, которые контролировали опубликованный статус: [Moder8] (http://drupal.org/project/modr8) и [LM Paypal] (http://drupal.org/project/lm_paypal). Узлы были одобрены Moder8 и, таким образом, _published_, но LM Paypal все еще говорил, что они были неопубликованными, когда они были на самом деле, поэтому узлы стали публиковаться без оплаты. –

1

Скорее странно. Нет ответов, только догадки:

Попробуйте получить доступ к настройкам администратора/содержимого/узла и нажмите «Разрешения перестройки».

И возможно очистить кэш ADMIN/настройки/производительность

+0

К сожалению, ни одна из них не работала. – easement

1

Проверьте права доступа для анонимных пользователей. Похоже, что у них есть неправильные разрешения.

+0

Что касается разрешений, единственным для анонимного пользователя, который отмечен в модуле узла, является доступ к контенту. – easement

+0

Существует также модуль под названием Content Access, но он обеспечивает доступ, а не редактирование. Любые другие идеи? – easement

2

Вы используете Views? Если это так, убедитесь, что у вас есть набор фильтров для показа только для публикации.

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

+0

Что странно в том, что я могу перейти на фактическую страницу, которая также не опубликована. – easement

+0

В нашей настройке есть поиск, но для него нет опубликованного фильтра. – Andy

0

Все модули доступа переопределяют настройки по умолчанию при использовании hook_node_access(). Скорее всего, это проблема. Поэтому вам нужно настроить эти параметры в разделе доступа к контенту.

И это не лучшее решение. Но если вам нужно что-то в промежутке времени вы всегда можете поместить этот код в файле node.tpl.php:

if(!$node->status && $user->uid != 1){ 

с кодом добавил:

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block"> 

<?php print $picture ?> 
<?php 

if(!$node->status && $user->uid != 1){ 

?> 
<?php if ($page == 0): ?> 
    <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2> 
<?php endif; ?> 

    <div class="meta"> 
    <?php if ($submitted): ?> 
    <span class="submitted"><?php print $submitted ?></span> 
    <?php endif; ?> 

    <?php if ($terms): ?> 
    <span class="terms"><?php print $terms ?></span> 
    <?php endif;?> 
    </div> 

    <div class="content"> 
    <?php print $content ?> 
    </div> 

<?php 
    if ($links) { 
    print $links; 
    } 
}//if for published node 
?> 

</div> 
+1

Только разрешение пользователя 1 - плохой взлом. – googletorp

+0

Предполагается, что это временное решение. Как указано в моем посте. Если вы хотите превратить это в полезное долгосрочное решение, вы должны изменить && $ user-> uid == 1, чтобы разрешить любому пользователю, которому разрешено администрировать узлы. – lilott8

Смежные вопросы