Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Полезные паттерны (PHP)

Наиболее частые вопросы по MaxSite CMS.
Аватар пользователя
Cuprum
Модератор
Сообщений: 766
Зарегистрирован: 01 фев 2009, 21:22

Полезные паттерны (PHP)

Сообщение Cuprum » 18 янв 2012, 13:08

На форуме периодически возникают одни и те же вопросы, связанные c решением каких-то несложных задач на PHP в рамках CMS.
Предлагаю форумчанам делиться некоторыми участками кода, которые могут быть полезны при "кастомной" настройке/разработке шаблонов.
Начну.

Проверка типа данных и типа страниц
  • Типы данных

    Код: Выбрать все

    if (is_type('page')) // если страница записи (одиночная страница)
    {
       выполняем код
    }

    if (is_type('home')) // если главная
    {
       выполняем код
    }

    if (is_type('tag')) // если страница метки
    {
       выполняем код
    }
    // и т. д.

  • Типы страниц

    Код: Выбрать все

    if ($page['page_type_name'] == 'blog') // если тип страницы - blog
    {
       выполняем код
    }

    if ($page['page_type_name'] == 'static') // если тип страницы - static
    {
       выполняем код
    }

Можно комбинировать

Код: Выбрать все

if (is_type('category') and $page['page_type_name'] == 'blog') // если страница рубрики и тип страницы - blog
{
   выполняем код
}


Проверка авторизации

Код: Выбрать все

if (!is_login() and !is_login_comuser()) // только для посетителей, которые не авторизованы
{
   выполняем код
}

Превью для записи
  • Превью - картинка-ссылка, ведущая на запись

    Код: Выбрать все

    if (isset($page_meta['prev'][0]) and $page_meta['prev'][0])
    echo '<a href="' . getinfo('site_url') . 'page/' . $page['page_slug'] . '"><img src = ' . $page_meta['prev'][0] . ' alt="" class="img-preview"></a>';

  • Превью - обычная картинка

    Код: Выбрать все

    if (isset($page_meta['prev'][0]) and $page_meta['prev'][0])
    echo '<img src = ' . $page_meta['prev'][0] . ' alt="" class="img-preview">';

Например, чтобы вывести превью у записей для всех типов данных (на главной, для страниц рубрик, для страниц меток и т.д) необходимо разместить один из 2-х вариантов кода в файле info-top.php папки type_foreach:

Код: Выбрать все

...
// только для page
if (is_type('page'))
{
  ...      
}
else // все остальные страницы
{
   здесь размещаем код         
   ...
}

Внешний вид превью-картинки оформляется с помощью CSS.

Аватар пользователя
dignityinside
Модератор
Сообщений: 471
Зарегистрирован: 05 июн 2010, 13:18

Re: Полезные паттерны (PHP)

Сообщение dignityinside » 21 янв 2012, 10:00

только для юзеров

Код: Выбрать все

if (is_login())
{
   выполняем код
}


только для комюзеров

Код: Выбрать все

if (is_login_comuser()){
  выполняем код
}


получаем id комюзера

Код: Выбрать все

global $MSO;
$comuser_id = $MSO->data['session']['comuser']['comusers_id'];

Аватар пользователя
Slonne
Сообщений: 52
Зарегистрирован: 01 дек 2012, 00:04

Re: Полезные паттерны (PHP)

Сообщение Slonne » 27 апр 2013, 21:56

Подскажите, пожалуйста, условие определения автора записи. Чтобы кнопка редактирования показывалась только авторам и админу, т.е. только тем, кто имеет право редактировать данный пост.

Код: Выбрать все

$page_id_autor
возможно, надо сопоставить с айди зашедшего юзера.


Вернуться в «FAQ»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей