Плагин MovableType является улучшенной версией плагина MetawebLog. Кроме всего прочего, он добавляет такие полезные методы, как mt.getPostCategories и mt.setPostCategories. Эти методы полезны тем, что позволяют передавать категории через ID, в то время как, MetawebLog передает заголовки категорий, затем, их распарсивает и находит в базе:
function newPost($blogid, $username, $password, $content, $publish) { ... $db =& JFactory::getDBO(); $db->setQuery("SET NAMES 'utf8'"); $category = substr($content['categories'][0], 0, strpos($content['categories'][0],' (')); $query = 'SELECT id,section FROM #__categories WHERE title='.$db->Quote($category); if(!$category){ $category = $params->get('catid'); $query = 'SELECT id,section FROM #__categories WHERE id='.$db->Quote($category); } $db->setQuery($query); $cat = $db->loadObjectList(); ... }
MovableType делает умнее, его метод newPost игнорирует параметр $content содержащий текстовые заголовки категорий без ID, но зато, после вызова newPost WLW вызывает метод mt.setPostCategories для передачи категорий через ID. Если список категорий пуст, то WLW вообще не вызывает mt.setPostCategories и пост записывается в категорию по умолчанию.
Странно то, что MovableType не позволяет передавать иерархическую структуру категорий, его методы mt.setPostCategories и mt.getPostCategories получают список категорий без парентов.