Скрываемые массивы в PHP (раскрывающийся список)

Я постараюсь быть кратким и ясным.

Я не очень хорошо знаю PHP. У меня есть массив, который выглядит слишком длинным:

http://i.stack.imgur.com/u4y11.jpg (не может выкладывайте картинки, так что жмите)

Как видите, вариантов 7, а выглядит это некрасиво и долго.

Я хотел бы разделить их на скрываемые сектора. Нравиться:

3 первых варианта [нажмите здесь, чтобы открыть раскрывающийся список] 4 последних варианта [нажмите здесь, чтобы открыть раскрывающийся список]

Вместо

Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5 Вариант 6 Вариант 7

Тебе известно?

Если кто-то может просветить меня по этому вопросу, я был бы глубоко признателен:

Это в основном 7 копий и вставок, например:


    $url_bgcolor =  get_bloginfo('stylesheet_directory') . '/admin/images/bgcolor/';
    $options[] = array( "name" => "Cor da letra do titulo da pagina",
                        "desc" => "Selecione a cor secundária do seu website.",
                        "id" => $shortname."_style2",
                        "std" => "",
                        "type" => "images",
                        "options" => array(
                                'default2.css' => $url_bgcolor . 'dark.png',
                                'black2.css' => $url_bgcolor . 'black.png',
                                'green2.css' => $url_bgcolor . 'green.png',
                                'blue2.css' => $url_bgcolor . 'blue.png',
                                'purple2.css' => $url_bgcolor . 'purple.png',
                                'orange2.css' => $url_bgcolor . 'orange.png',
                                'red2.css' => $url_bgcolor . 'red.png'
                ));


person Lucas Bustamante    schedule 29.11.2012    source источник


Ответы (1)


Чтобы hide/show элементов на вашей странице, вам нужно использовать скрипт на стороне клиента, например javascript. Вот простая функция javascript для переключения между showing и hiding вашими массивами.

В <head> вашего html добавьте следующий скрипт/функцию-

<script type="text/javascript"> 
function toggleView(aid, id, text) {
    var divView = document.getElementById(id);
    var anchor = document.getElementByID(aid);

   if (divView.style.display != "block") {
       divView.style.display = "block";
       anchor.innerHTML = "click here to hide " + text + " options";
   } else {
      divView.style.display = "none";
      anchor.innerHTML = "click here to show " + text + " options";
   }
}
</script>

Затем в <body> вы должны создать якорь <a> и <div>

Ваш тег привязки и div будут выглядеть так:

<a id="toggle3" onclick="toggleView('toggle3', 'options3', 'first 3')">click here to show first 3 options</a>
<div id="options3" style="display: none">
Option 1
Option 2
Option 3
</div>

<a id="toggle4" onclick="toggleView('toggle4', 'options4', 'last 4')">click here to show last 4 options</a>
<div id="options4" style="display: none">
Option 4
Option 5
Option 6
Option 7
</div>

ОТРЕДАКТИРОВАНО 30 ноября

Вот как бы я это сделал -

Javascript
В строке № 438 из admin-interface.php перед <?php } добавьте javascript function()

    <?php  
    //Hide/Show Image Groups  
    ?>  
<script type="text/javascript">   
function toggleView(aid, id, text) {  
    var divView = document.getElementById(id);  
    var anchor = document.getElementByID(aid);  

if (divView.style.display != "block") {
   divView.style.display = "block";
   anchor.innerHTML = "click here to hide " + text + " options";
} else {
  divView.style.display = "none";
  anchor.innerHTML = "click here to show " + text + " options";
}
}
</script>

Anchor/DIV
В строке 603 строки admin-interface.php перед //$output .= '<div class="section ... добавьте anchors и <div>
примечание: если вы уже добавили код JavaScript function() выше, это может быть строка № 621 вместо № 603

if ($value['type'] == "images" && $counter == 1)
{$output .= '<a id="toggle3" onclick="toggleView(\'toggle3\', \'options3\', \'first 3\')">click here to show first 3 options</a>'."\n" . '<div id="options3" style="display: none">'."\n";}
if ($value['type'] == "images" && $counter == 4)
{$output .= '<a id="toggle4" onclick="toggleView(\'toggle4\', \'options4\', \'last 4\')">click here to show last 4 options</a>'."\n" . '<div id="options4" style="display: none">'."\n";}

В строке #957 из admin-interface.php перед }$output .= '</div>';return array($output,$menu); в #958-960 добавьте закрывающий тег </div>
примечание: если вы уже добавили JavaScript function() и anchors и <div> выше, это может быть строка #979 вместо #957

if ($value['type'] == "images" && ($counter == 1 || $counter == 4))
{$output .= '</div>'."\n";}
person Sean    schedule 29.11.2012
comment
спасибо за ответ, я редактирую тему WordPress, поэтому она на PHP. Файл ‹head›, я думаю, мне удалось, добавив его в header.php Но часть тела, это более сложно, потому что она находится внутри файла PHP, функции php... Должен ли я использовать echo '‹a id [etc ] '? - person Lucas Bustamante; 29.11.2012
comment
Да, вы можете использовать echo "<a id=....>";, который я добавил в качестве примера, или вы можете закрыть php, а затем снова запустить php - ?><a id=...><?php ... - person Sean; 29.11.2012
comment
Итак, это не работает... Когда я добавляю echo , оно появляется над тегом ‹head›, потому что я думаю, что $options — это какая-то функция, которая вызывается где-то еще, а содержимое — это массивы, понимаете? Вот полный файл: mediafire.com/?qxfeiay872e2i3a - person Lucas Bustamante; 30.11.2012
comment
Этот файл просто устанавливает массив $option. Какой у вас скрипт, который повторяет массив? Должно быть что-то вроде foreach($color as $option){echo $color['name'] ... $color['options'] ... - person Sean; 01.12.2012
comment
я поищу, отредактирую через несколько -- Изменить -- Я почти уверен, что это тот самый: mediafire.com/?38z7vmou7yv7j9z - person Lucas Bustamante; 01.12.2012
comment
Я добавил отредактированный ответ выше. Он «попытается» указать номер строки, куда поместить код, но он может немного отличаться в зависимости от вашего редактора кода. - person Sean; 01.12.2012
comment
Шон, спасибо тебе за твою помощь, правда:] ты спасаешь мою задницу. Я сейчас в доме друга, когда я вернусь домой, я попытаюсь отредактировать здесь. - person Lucas Bustamante; 01.12.2012
comment
Шон, мне уже стыдно, что я отнял у тебя столько времени... Итак, вот что у меня получилось: Добавив все, я получил вот это: i46.tinypic.com/2n9c9hk.jpg Однако при нажатии ничего не отображается; Мой full_file.php сильно изменился с тех пор, вы можете взглянуть: mediafire.com/?w2m9h5w1clz7svt Если вы хотите, отправьте мне электронное письмо по адресу: [email protected], и я отвечу вам с идентификатором Teamviewer и паролем, чтобы вы могли посмотреть. Что вы думаете? Слишком много проблем? :S СПАСИБО за ваше время!!! - person Lucas Bustamante; 01.12.2012