Как сделать электронный журнал

Делаю электронную версию журнала на WordPress.

План примерно такой:
Статьи журнала будут опубликованы в разных рубриках.

Если читатель захочет сделать выборку статей по определенной теме, он может открыть нужную рубрику или задать ключевое слово в поиск.

А если он захочет прочитать все статьи журнала, например журнал №1 ?

Пока идея одна – к каждой статье номера добавлять метку – журнал №1,
а дальше через поиск по метке.

Но это немного громоздко, и непонятно, как при этом вывести список номеров журнала в сайдбаре?

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

На все статьи журнала номера 1 поставить одинаковую дату публикации? Тогда можно сортировать по дате в календаре или Архиве. Пользоваться отложенной публикацией (например, каждый редактор, отвечающий за рубрику сдал свою статью, а дату поставил будущую, чтобы остальные подтянулись…)

Как вариант сойдет.
Может быть, еще есть варианты?

Тоже интересует данный вопрос.

Пока остановилась на таком варианте: к каждой записи добавляется через произвольное поле определенное значение ключа.
Для всех записей одного выпуска (№ журнала) – оно одинаково.

Теперь новая сложность – как собрать записи с одинаковым значением ключа?

Нужна функция, которая будет это делать.
Если кто то может помочь с этим, пожалуйста помогите.

Допустимо довільно поле називається keyn. Якщо Вам треба виводити пости номеру журнала приміром 4, то код відповідно буде такий:

<?

$postslist = get_posts('numberposts=5&order=DSC&orderby=date');
      foreach ($postslist as $post) :
      setup_postdata($post);
     ?>
<? $keyn = get_post_meta($post->ID, 'keyn', true); ?>
     <?php if ($keyn==4) 
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
 ?>
         
        <?php endforeach; ?>

Буде виводитися до 5 заголовків постів із журнала номер 4. Можете міняти код під себе.

Чи Вам потрібно щось інше?

Доречі, якщо вписати в get_posts(‘numberposts=5&order=DSC&orderby=date’) певну категорію, то Ви можете отримувати певну категорію статтей із певного журналу.

gurvinyk, дякую за допомогу. Спробую.

Звертайтеся. 🙂

gurvinyk, почему то не работает.
Мне собственно нужно как то автоматизировать процесс вывода.
Чтобы не прописывать код для каждого журнала, а автоматически выводить в сайдбаре список:
Журнал 1
журнал 2
Журнал 3

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

Дивно. Я на своєму блозі експерементував і все працювало.. А які помилки видає?

Можна зробити цикл виведення типу:

<?
for ($i=0;$i<$n;$i++)
{
echo 'Журнал №';
echo $i+1;


$postslist = get_posts('numberposts=5&order=DSC&orderby=date');
      foreach ($postslist as $post) :
      setup_postdata($post);
    
$keyn = get_post_meta($post->ID, 'keyn', true); 
     if ($keyn==$n) 
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
 ?>
         
        <?php endforeach; ?>
}
?>

де $n – кількість журналів

Parse error: syntax error, unexpected $end in X:\home\test.ru\…\sidebar.php on line 185

Похоже, что цикл не закрыт.

Parse error: syntax error, unexpected $end in X:\home\test.ru\...\sidebar.php on line 185

Похоже, что цикл не закрыт.

Це в першому коді чи другому помилка?

Бо в другому справді є 🙂 Я його не тестив 🙂

<?
for ($i=0;$i<$n;$i++)
{
echo 'Журнал №';
echo $i+1;


$postslist = get_posts('numberposts=5&order=DSC&orderby=date');
      foreach ($postslist as $post) :
      setup_postdata($post);
    
$keyn = get_post_meta($post->ID, 'keyn', true); 
     if ($keyn==$n) 
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
 ?>
         
        <?php endforeach; ?>
<?
}
?>

А в першому помилок не повинно бути!

gurvinyk, в первом ошибок действительно, нет.
Он просто выводит не совсем то, что мне нужно.

Второй, возможно делает то, что нужно, но он к сожалению, не работает.

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

Дивно. Я пробував. У мене перший код вийшов. Навіть пост у своєму бложеку зробив 🙂

Спробуйте перший код спочатку щоб запрацював. Як вийде – можеет міняти під себе.

Опишіть, що Вам виводить і що там не так?

Этот код выводит список постов Журнала 2.

<?

$postslist = get_posts(‘numberposts=5&order=DSC&orderby=date’);
foreach ($postslist as $post) :
setup_postdata($post);
?>
<? $keyn = get_post_meta($post->ID, ‘keyn’, true); ?>
<?php if ($keyn==’Журнал 2′)
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
?><?php endforeach; ?>

Чтобы вывести все журналы нужно повторить этот код столько раз, сколько существует журналов.
А ведь их может быть сотня. Вообщем, получается практически ручной вывод.

Хотелось бы как то автоматизировать этот процесс, чтобы выводился не список постов, а список журналов в виде ссылок:
Журнал 1
журнал 2
Журнал 3

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

А якщо в сайдбарі зробити:
<a href="url?journal_number=1">Журнал 1</a>
<a href="url?journal_number=2">Журнал 2</a>
<a href="url?journal_number=3">Журнал 3</a>
….

Ну а за посиланням в тілі виведення постів

<?

$postslist = get_posts(‘numberposts=5&order=DSC&orderby=date’);
foreach ($postslist as $post) :
setup_postdata($post);
?>
<? $keyn = get_post_meta($post->ID, ‘keyn’, true); ?>
<?php if ($keyn==$journal_number)
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
?><?php endforeach; ?>

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

Выводить все вручную не продуктивно.

gurvinyk, помогите, пожалуйста, доработать этот код:

<?
for ($i=0;$i<$n;$i++)
{
echo ‘Журнал №’;
echo $i+1;

$postslist = get_posts(‘numberposts=5&order=DSC&orderby=date’);
foreach ($postslist as $post) :
setup_postdata($post);

$keyn = get_post_meta($post->ID, ‘keyn’, true);
if ($keyn==$n)
{
?> <a href="<?php the_permalink() ?>"> <? the_title(); ?> </a> <?
}
?>

<?php endforeach; ?>
<?
}
?>

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

Що конкретно потрібно доробити?

gurvinyk, да просто, чтобы он работал.

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

А он, к сожалению, ничего не выводит.
Ошибок не вызывает, но и не выводит ничего.

for ($i=0;$i<$n;$i++)

Это цикл, в котором $i увеличивается на 1 от начального значения, равного 0, до тех пор, пока $i меньше $n. Значение $n не определено, а стало быть равно 0. Т.е. цикл вообще не выполняется.

Ю.Б., спасибо. Я на эту строку и грешила потому, что это единственная строка, которую я не поняла.

А как определить это значение?

Це значення або приходе іззовні або пишеться вручну. Винен. Не пояснив. 🙁

Тобто це кількість журналів.

Впринципі можна написати функцію яка б визначала кількість журналів. Подумаю над цим. Або можете вручну.

Поставила для примера 10.

<?
for ($i=0;$i<10;$i++)
{
echo ‘Журнал №’;
echo $i+1;

$postslist = get_posts(‘numberposts=5&order=DSC&orderby=date’);

foreach($postslist as $post) :
setup_postdata($post);

$keyn = get_post_meta($post->ID, ‘keyn’, true);
if($keyn==$n)
{
?>
<a href="<?php the_permalink() ?>"><? the_title(); ?></a><br />
<? } ?>
<?php endforeach; ?>
<? } ?>

Появился список журналов.

Журнал №1 Журнал №2 Журнал №3 Журнал №4 Журнал №5 Журнал №6 Журнал №7 Журнал №8 Журнал №9 Журнал №10

Статьи их журналов не выводятся.

На самом деле журналов всего 2. В каждом по 3 статьи.

Статьи их журналов не выводятся.

Дивно. На моєму блозі виводилися.

Ви всюди прописали у статтях довільні поля?

Да. прописала, но на сайте ничего не отображается.

Пожалуйста, помогите исправить этот код.

Спробуйте так:

<?
for ($i=0;$i<10;$i++)
{
echo ‘Журнал №’;
echo $i+1;

$postslist = get_posts(‘numberposts=5&order=DSC&orderby=date’);

foreach($postslist as $post) :
setup_postdata($post);

$keyn = get_post_meta($post->ID, ‘keyn’, true);
if($keyn==$i)
{
?>
<a href="<?php the_permalink() ?>"><? the_title(); ?></a><br />
<? } ?>
<?php endforeach; ?>
<? } ?>

gurvinyk, спасибо за то, что пытаетесь помочь.

Вот, что у меня получается:

Журнал №1
Статья 1
Статья 2
Статья 3
Статья 4
Статья 5
Статья 6

Журнал №2 Журнал №3 Журнал №4 Журнал №5 Журнал №6 Журнал №7 Журнал №8 Журнал №9 Журнал №10

Всего журналов 3, а выводится 10, т.к. в коде указана цифра 10.
Но она там стоит с расчетом на будущее.

Как сделать, чтобы выводились только актуальные журналы?

И еще – ключ keyn добавлен только к 3м статьям, а выводятся все, которые есть на сайте.

Как сделать, чтобы это все работало корректно?

Народ, помогите, плиз – очень нужно.

Я заплачу тому, кто напишет нужную функцию.

Вот, что требуется сделать:

К каждой статье через произвольное поле будет добавляться ключ, например kein и значение ключа, согласно номеру журнала.
Например, Журнал 1, Журнал 2 и т.д.

Нужна функция, которая соберет все статьи со значениями "Журнал 1, Журнал 2, Журнал 3 и т.д." и выведет в сайдбаре или на отдельной странице список журналов в таком виде:

Журнал №1
Статья 1
Статья 2
Статья 3

Журнал №2
Статья 1
Статья 2
Статья 3

Журнал №3
Статья 1
Статья 2
Статья 3

Если надпись "Журнал №1" будет вести на страницу со статьями этого журнала, т.е. будет ссылкой, то вообще будет замечательно.

Пожалуйста, напишите кто-нибудь. Деньги уже приготовила.

Переименуйте «Архив» на «Журнал» и будет тоже самое. Нет?

К сожалению, нет.

Хотя, это тоже архив, только собранный из значений произвольных полей.

Какова планируемая периодичность выхода журнала?

Если надпись "Журнал №1" будет вести на страницу со статьями этого журнала, т.е. будет ссылкой, то вообще будет замечательно.

Я действительно не понимаю, зачем огород городить…

Вариант 1: Всем статьям Журнала №1 даете, например, метку «Журнал №1», статьям Журнала №2 — метку «Журнал №2» и т.д.
Вариант 2: Ну или если Журнал выходит раз в месяц, то следите, чтобы статьи публиковались в нужном месяце. Если чаще, то следите за датой — чтобы дату публикации ставили одну и туже. Тогда стандартными средствами вывода архива (календаря по годам, месяцам, датам, меткам) получаете «подшивки».

Может я как-то задачу неправильно понимаю, но как по мне, то проблема с произвольными полями из пальца высосона. Впрочем, если Вы хотите, то почитайте Custom Fields WordPress примеры 11, 12 у Соники. Или Сортировка постов по произвольным полям. Только еще раз повторю свое imho — без всего этого можно обойтись стандартными средствами WP чуть-чуть видоизменив шаблон Архива… ну, или… я как-то очень по-своему понимаю Вашу задачу и не вижу недостатков в предлагаемом решении.

Anonymous
Отправить
Ответ на: