Простой вопрос PHP: условный класс CSS на основе пользователя - PullRequest
2 голосов
/ 13 января 2011

Я использую этот код, чтобы показать другой класс стилей для поля комментария, если комментарий сделан администратором

<li class="<?php if ($comment->user_id == 1) $oddcomment = "authorstyle"; echo $oddcomment; ?>"></li>

Администратор имеет user_id = 1. Теперь, что если я захочу добавить user_id 5 и 6, как бы я отредактировал этот код?

Ответы [ 7 ]

2 голосов
/ 13 января 2011

Один (возможно) надежный способ справиться с подобной ситуацией - это спросить, является ли идентификатор пользователя одним из набора идентификаторов пользователей, и, таким образом, условие довольно просто:

in_array($comment->user_id, array(1,5,6))

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

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

2 голосов
/ 13 января 2011

Вы можете использовать ||оператор (что означает или):

if ($comment->user_id == 1 || $comment->user_id == 5 || $comment->user_id == 6)

Или вы можете использовать in_array:

if (in_array($comment->user_id, array(1, 5, 6))

, который выглядит лучше и удобнее в обслуживании.:)

0 голосов
/ 13 января 2011

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

Этот сайт - именно то, что вы хотите сделать.

http://buildinternet.com/2009/09/automatically-highlight-admin-comments-in-wordpress/

0 голосов
/ 13 января 2011

Вы можете сделать что-то вроде этого:

     <?php
        $liStyles[1] = 'authorstyle';
        $liStyles[5] = 'somestyle';
        $liStyles[6] = 'someotherstyle';
     ?>



 <li class="<?php echo $liStyles[$comment->user_id]; ?>"></li>
0 голосов
/ 13 января 2011

Вы можете попробовать этот код

<?php 
if ($comment->user_id == 1) 
   $oddcomment = "authorstyle"; 
else($comment->user_id == 5)
    $oddcomment = "authorstyle2"; 
else($comment->user_id == 6)
    $oddcomment = "authorstyle3"; 
?>

<li class="<?php echo $oddcomment; ?>"></li>
0 голосов
/ 13 января 2011

Просто используйте OR или || в вашем операторе if.

<li class="<?php if ($comment->user_id == 1 || $comment->user_id == 5 || $comment->user_id == 6) $oddcomment = "authorstyle"; echo $oddcomment; ?>"></li>

0 голосов
/ 13 января 2011

Вы можете использовать что-то вроде этого:

<li class="<?php
  if ($comment->user_id == 1)
     $oddcomment = "authorstyle";
  if ($comment->user_id == 2)
     $oddcomment = "somethingelse";
  if ($comment->user_id == 3)
     $oddcomment = "blahbalh";
 echo $oddcomment; ?>"></li>

... и т. Д. Для нескольких стилей.

<li class="<?php
  if ($comment->user_id == 1 || $comment->user_id == 4 || $comment->user_id == 5)
     $oddcomment = "blahbalh";
 echo $oddcomment; ?>"></li>

... для нескольких идентификаторов в одном стиле.

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