Создание страницы с часто задаваемыми вопросами в стиле оглавления без дублирования HTML - PullRequest
0 голосов
/ 10 сентября 2011

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

Поскольку вопрос отображается дважды на странице, при этом очевидным образом, вопрос будет дважды отображаться в коде, что может вызвать проблемы, если необходимо изменить вопросы, а тот, кто обновляет его, только изменяет код в одном месте.

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

Полагаю, я надеюсь, что есть способ сохранить вопросы и ответы в массиве (возможно, с использованием PHP или javascript?) Или в паре массивов, а затем для каждого элемента в массивах поместить элемент списка с сгенерированным якорный тег, вопрос и ответ. Это выполнимо, или я просто использую неправильный подход к веб-разработке здесь?

Смежный побочный вопрос: есть ли в любом случае стиль неупорядоченного списка для замены маркеров на «Q:»?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2011
<?php
    $questions = array(
        "Question 1",
        "Question 2",
        "Question 3",
        "Question 4"
    );

    echo '<p>';     // FAQ Menu

    foreach ($questions as $key => $question) {
        echo '<a href="#', $key, '">', $question, '</a><br />';
    }

    echo '</p>';

    // Begin FAQ

    foreach ($questions as $key => $question) {
        echo '<h2><a name="', $key, '">', $question, '</a></h2>';
    }

?>

Вы можете изменить HTML, чтобы получить желаемое форматирование.Ключ массива становится именем привязки, поэтому, если вы хотите изменить свои вопросы, все, что вам нужно сделать, это изменить их один раз в массиве.

Если вы хотите разделить свои вопросы и ответы, вы можете использовать это:

<?php
    $questions = array(
        array("Question 1", "Answer 1"),
        array("Question 2", "Answer 2"),
        array("Question 3", "Answer 3"),
        array("Question 4", "Answer 4")
    );

    echo '<p>';

    foreach ($questions as $key => $question) {
        echo '<a href="#', $key, '">', $question[0], '</a><br />';
    }

    echo '</p>';

    foreach ($questions as $key => $question) {
        echo '<h2><a name="', $key, '">', $question[0], '</a></h2>';
        echo '<p>', $question[1], '</p>';
    }

?>
0 голосов
/ 10 сентября 2011

Самый простой способ создать оглавление - использовать якоря;легко обновлять, создавать и использовать.Если вы посмотрите на такие сайты, как Википедия, они также используют метод привязки к содержанию.Возможно ли, что клиент может редактировать веб-страницу?В противном случае, это не должно быть большой проблемой.

Что касается вашего дополнительного вопроса, я знаю, что можно редактировать маркеры в списке с помощью CSS и заменять их изображением.Это будет выглядеть примерно так:

ul {
 list-style-position: outside;
 list-style-image: url("image.gif")
 list-style-type: square;
}

Более подробную информацию можно найти здесь: http://www.mediacollege.com/internet/css/ul-list.html

...