@if(!isset($innerLoop))
<ul class="nav navbar-nav">
@else
<ul class="dropdown-menu">
@endif
@php
if (Voyager::translatable($items)) {
$items = $items->load('translations');
}
@endphp
@foreach ($items->sortBy('order') as $item)
@php
$originalItem = $item;
if (Voyager::translatable($item)) {
$item = $item->translate($options->locale);
}
$listItemClass = null;
$linkAttributes = null;
$styles = null;
$icon = null;
$caret = null;
// Background Color or Color
if (isset($options->color) && $options->color == true) {
$styles = 'color:'.$item->color;
}
if (isset($options->background) && $options->background == true) {
$styles = 'background-color:'.$item->color;
}
// With Children Attributes
if(!$originalItem->children->isEmpty()) {
$linkAttributes = 'class="dropdown-toggle" data-toggle="dropdown"';
$caret = '<span class="caret"></span>';
if(url($item->link()) == url()->current()){
$listItemClass = 'dropdown active';
}else{
$listItemClass = 'dropdown';
}
}
// Set Icon
if(isset($options->icon) && $options->icon == true){
$icon = '<i class="' . $item->icon_class . '"></i>';
}
@endphp
<li class="{{ $listItemClass }}">
<a href="{{ url($item->link()) }}" target="{{ $item->target }}" style="{{ $styles }}" {!! $linkAttributes or '' !!}>
{!! $icon !!}
<span>{{ $item->title }}</span>
{!! $caret !!}
</a>
@if(!$originalItem->children->isEmpty())
@include('voyager::menu.bootstrap', ['items' => $originalItem->children, 'options' => $options, 'innerLoop' => true])
@endif
</li>
@endforeach
</ul>
<ul class="nav navbar-nav">
@php
if (Voyager::translatable($items)) {
$items = $items->load('translations');
}
@endphp
@foreach ($items->sortBy('order') as $item)
@php
$originalItem = $item;
if (Voyager::translatable($item)) {
$item = $item->translate($options->locale);
}
// TODO - still a bit ugly - can move some of this stuff off to a helper in the future.
$listItemClass = [];
$styles = null;
$linkAttributes = null;
if(url($item->link()) == url()->current())
{
array_push($listItemClass,'active');
}
// With Children Attributes
if(!$originalItem->children->isEmpty())
{
foreach($originalItem->children as $children)
{
if(url($children->link()) == url()->current())
{
array_push($listItemClass,'active');
}
}
$linkAttributes = 'href="#' . str_slug($item->title, '-') .'-dropdown-element" data-toggle="collapse" aria-expanded="'. (in_array('active', $listItemClass) ? 'true' : 'false').'"';
array_push($listItemClass, 'dropdown');
}
else
{
$linkAttributes = 'href="' . url($item->link()) .'"';
}
// Permission Checker
$self_prefix = str_replace('/', '\/', $options->user->prefix);
$slug = str_replace('/', '', preg_replace('/^\/'.$self_prefix.'/', '', $item->link()));
if ($slug != '') {
// Get dataType using slug
$dataType = $options->user->dataTypes->first(function ($value) use ($slug) {
return $value->slug == $slug;
});
if ($dataType) {
// Check if datatype permission exist
$exist = $options->user->permissions->first(function ($value) use ($dataType) {
return $value->key == 'browse_'.$dataType->name;
});
} else {
// Check if admin permission exists
$exist = $options->user->permissions->first(function ($value) use ($slug) {
return $value->key == 'browse_'.$slug && is_null($value->table_name);
});
}
if ($exist) {
// Check if current user has access
if (!in_array($exist->key, $options->user->user_permissions)) {
continue;
}
}
}
@endphp
<li class="{{ implode(" ", $listItemClass) }}">
<a {!! $linkAttributes !!} target="{{ $item->target }}">
<span class="icon {{ $item->icon_class }}"></span>
<span class="title">{{ $item->title }}</span>
</a>
@if(!$originalItem->children->isEmpty())
<div id="{{ str_slug($originalItem->title, '-') }}-dropdown-element" class="panel-collapse collapse {{ (in_array('active', $listItemClass) ? 'in' : '') }}">
<div class="panel-body">
@include('voyager::menu.admin_menu', ['items' => $originalItem->children, 'options' => $options, 'innerLoop' => true])
</div>
</div>
@endif
</li>
@endforeach
</ul>
<!--:en--><!--:--><!--:ru--><!--:--><!--:ua--><!--:-->
Пользовательские поля
Введите "id" или "class" атрибут текстового поля с вашей схемы, который вы хотели бы перевести. Это относиться к Постам, редакторам страниц и медиа (/wp-admin/post*). Что бы найти "id" или "class", нажмите правой клавишей мышки на поле в Посту или в редакторе страниц и выбирите "Inspect Element". Найдите там атрибут поля под названием "id" или "class". Введите их тут через запятую. После сохранения конфигурации, эти поля начнут реагировать при переключении языка, и вы сможете ввести разные тексты для каждого языка. Поля ввода типа 'textarea' будут парснуты <!--:--> синтаксисом, а одностороннее поля с [:] синтаксисом. Если вас не устраивает такое поведение, укажите префикс '<' или '[' к имени поля который что бы указать какой синтакс использовать. За дополнительной информацией можно обратиться в FAQ.
id
Значение атрибута "id" обычно уникален в пределах одной страницы, иначе первое поле которое будет найдено с этим идентификатором будет использовано.
class
Все поля указанного класса будет реагировать на кнопки переключения языка. Будьте осторожны, чтобы не включить класс, который затронет поля нейтральные к языку. Если вы не можете уникально идентифицировать поле необходимое "id", либо с атрибутом "class", сообщите о проблеме в Support Forum
Пользовательские фильтры
Names of filters (which are enabled on theme or other plugins via apply_filters() function) to add translation to. For more information, read FAQ.
if (!function_exists('pagination')) { // если ф-я уже есть в дочерней теме - нам не надо её определять
function pagination() { // функция вывода пагинации
global $wp_query; // текущая выборка должна быть глобальной
$big = 999999999; // число для замены
$links = paginate_links(array( // вывод пагинации с опциями ниже
'base' => str_replace($big,'%#%',esc_url(get_pagenum_link($big))), // что заменяем в формате ниже
'format' => '?paged=%#%', // формат, %#% будет заменено
'current' => max(1, get_query_var('paged')), // текущая страница, 1, если $_GET['page'] не определено
'type' => 'array', // нам надо получить массив
'prev_text' => 'Назад', // текст назад
'next_text' => 'Вперед', // текст вперед
'total' => $wp_query->max_num_pages, // общие кол-во страниц в пагинации
'show_all' => false, // не показывать ссылки на все страницы, иначе end_size и mid_size будут проигнорированны
'end_size' => 15, // сколько страниц показать в начале и конце списка (12 ... 4 ... 89)
'mid_size' => 15, // сколько страниц показать вокруг текущей страницы (... 123 5 678 ...).
'add_args' => false, // массив GET параметров для добавления в ссылку страницы
'add_fragment' => '', // строка для добавления в конец ссылки на страницу
'before_page_number' => '', // строка перед цифрой
'after_page_number' => '' // строка после цифры
));
if( is_array( $links ) ) { // если пагинация есть
echo '<ul class="pagination">';
foreach ( $links as $link ) {
if ( strpos( $link, 'current' ) !== false ) echo "<li class='active'>$link</li>"; // если это активная страница
else echo "<li>$link</li>";
}
echo '</ul>';
}
}
}
<?php if (have_posts()) : while (have_posts()) : the_post(); // если посты есть - запускаем цикл wp ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php // контэйнер с классами и id ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php // заголовок поста и ссылка на его полное отображение (single.php) ?>
<div class="meta">
<p>Опубликовано: <?php the_time(get_option('date_format')." в ".get_option('time_format')); ?></p> <?php // дата и время создания ?>
<p>Автор: <?php the_author_posts_link(); ?></p>
<p>Категории: <?php the_category(',') ?></p> <?php // ссылки на категории в которых опубликован пост, через зпт ?>
<?php the_tags('<p>Тэги: ', ',', '</p>'); // ссылки на тэги поста ?>
</div>
<div class="row">
<?php if ( has_post_thumbnail() ) { ?>
<div class="col-sm-3">
<a href="<?php the_permalink(); ?>" class="thumbnail">
<?php the_post_thumbnail(); ?>
</a>
</div>
<?php } ?>
<div class="<?php if ( has_post_thumbnail() ) { ?>col-sm-9<?php } else { ?>col-sm-12<?php } // разные классы в зависимости есть ли миниатюра ?>">
<?php the_content(''); // пост превью, до more ?>
</div>
</div>
</article>
<?php endwhile; // конец цикла