13
Янв

Apostrophe CMS: Получить значение глобального слота

Пример:

$page = aPageTable::retrieveBySlugWithSlots('global');
$slot = $page->getSlot('phone',1);
echo $slot->value;

17
Ноя

Apostrope CMS: Ошибка при добавление русских названий страниц.

UPDATED: В версии 1.5 данный баг будет пофикшен, заметка касается только версии 1.4

Ошибка возникает когда пытаешься установить название страницы русскими символами (больше 12 символов).
После попытки сохранения, сайт будет выплёвывать нечто подобное:

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xD0</str...' for column 'diff' at row 1

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

Решение:

1. копируем файл aString.class.php из плагина апострофа в директорию lib нашего проекта.

cp plugins/apostrophePlugin/lib/toolkit/aString.class.php lib/aString.class.php

2. Открываем в редакторе это файл и заменяем метод limitCharacters(), на представленный ниже:

//aString.class.php:

  public static function limitCharacters($s, $length, $options = array())
  {
    $ellipsis = "";
    if (isset($options['append_ellipsis']) && $options['append_ellipsis'])
    {
      $ellipsis = "...";
    }
    if ($length < 12)
    {
      // Not designed to be elegant below this length
      return mb_substr($s, 0, $length);
    }
    if (mb_strlen($s) > $length)
    {
      $s = mb_substr($s, 0, $length - mb_strlen($ellipsis));
      $slength = mb_strlen($s);
      for ($i = 1; ($i <= 10); $i++)
      {
        $c = mb_substr($s, $slength - $i, 1);
        if (($c === ' ') || ($c === '\t') || ($c === '\r') || ($c === '\n'))
        {
          return mb_substr($s, 0, $slength) . $ellipsis;
        }
      }
      return $s . $ellipsis;
    }
    return $s;
  }

Все, удачного использования!
PS Не забывайте, что теперь при обновлении плагина апострофа, в нем может поменяться файл aString.class.php, но он не будет подцепляться так как у нас в директории lib проекта лежит аналогичный файл, так что это придется отслеживать.

28
Авг

Apostrophe CMS – изменение стандартной слугофикации (slugify)

В Apostrophe CMS при сохранении страницы или других элементов автоматически преобразует их названия к виду пригодному для отображения в url, но к сожалению для кириллических строк оно работает не так как хочется. Мне например, необходимо чтобы кириллические символы транслировались в аналоги латинского алфавита.

К счастью такое поведение CMS легко исправить без ковыряния в исходниках Apostrophe, для этого надо:

  • Скопировать файл "/plugins/apostrophePlugin/lib/aTools.class.php" куда-нибудь в каталог "/lib" например "/lib/aTools.class.php". В этом случае будет использовать наш класс, а не класс из построфа.
  • Переопределить статический метод slugify()

Пример:

<?php
// /lib/aTools.class.php
class aTools extends BaseaTools
{
  public static function slugify($path, $allowSlashes = false)
  {
    $path = hsTextUtils::translit($path);
    return parent::slugify($path, $allowSlashes);
  }
}

В данном примере hsTextUtils::translit() – это мой метод с помощью которого я делаю трансляцию кириллических символов в латинские, вам следует здесь использовать свой.

1
Июл

Apostrophe — CMS на Symfony с визуальным представлением

Apostrophe — CMS написанная на PHP, Symfony.
В данной CMS нет отдельной страницы для администрирования, все данные редактируются непосредственно в том месте где текст размещается.
Для пробы сделали пару сайтов на Apostrophe. Сама CMS все еще довольно сыроватая, но если ее обработать напильником, получается довольно интересный продукт.
Идеально подходит для небольших сайтов, сайтов визиток.