Nhà xuất bản - Tham khảo API
Nhà xuất bản API Tham khảo
Phần tiêu đề “Nhà xuất bản API Tham khảo”Tài liệu tham khảo đầy đủ về mô-đun Nhà xuất bản classes, các phương thức, hàm và điểm cuối API.
Cấu trúc mô-đun
Phần tiêu đề “Cấu trúc mô-đun”Tổ chức lớp
Phần tiêu đề “Tổ chức lớp”Publisher Module Classes:
├── Item / ItemHandler│ ├── Get articles│ ├── Create articles│ ├── Update articles│ └── Delete articles│├── Category / CategoryHandler│ ├── Get categories│ ├── Create categories│ ├── Update categories│ └── Delete categories│├── Comment / CommentHandler│ ├── Get comments│ ├── Create comments│ ├── Moderate comments│ └── Delete comments│└── Helper ├── Utility functions ├── Format functions └── Permission checksHạng mục
Phần tiêu đề “Hạng mục”Tổng quan
Phần tiêu đề “Tổng quan”Item class đại diện cho một bài viết/mục duy nhất trong Nhà xuất bản.
Không gian tên: XoopsModules\Publisher\
Tập tin: modules/publisher/class/Item.php
Trình xây dựng
Phần tiêu đề “Trình xây dựng”// Create new item$item = new Item();
// Get existing item$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);Thuộc tính & Phương thức
Phần tiêu đề “Thuộc tính & Phương thức”Nhận thuộc tính
Phần tiêu đề “Nhận thuộc tính”// Get article ID$itemId = $item->getVar('itemid');$itemId = $item->id();
// Get title$title = $item->getVar('title');$title = $item->title();
// Get description$description = $item->getVar('description');$description = $item->description();
// Get body/content$body = $item->getVar('body');$body = $item->body();
// Get subtitle$subtitle = $item->getVar('subtitle');$subtitle = $item->subtitle();
// Get author$authorId = $item->getVar('uid');$authorId = $item->authorId();
// Get author name$authorName = $item->getVar('uname');$authorName = $item->uname();
// Get category$categoryId = $item->getVar('categoryid');$categoryId = $item->categoryId();
// Get status$status = $item->getVar('status');$status = $item->status();
// Get published date$date = $item->getVar('datesub');$date = $item->date();
// Get modified date$modified = $item->getVar('datemod');$modified = $item->modified();
// Get view count$views = $item->getVar('counter');$views = $item->views();
// Get image$image = $item->getVar('image');$image = $item->image();
// Get featured status$featured = $item->getVar('featured');Đặt thuộc tính
Phần tiêu đề “Đặt thuộc tính”// Set title$item->setVar('title', 'New Article Title');
// Set body$item->setVar('body', '<p>Article content here</p>');
// Set description$item->setVar('description', 'Short description');
// Set category$item->setVar('categoryid', 5);
// Set status (0=draft, 1=published, etc)$item->setVar('status', 1);
// Set featured$item->setVar('featured', 1);
// Set image$item->setVar('image', 'path/to/image.jpg');Phương thức
Phần tiêu đề “Phương thức”// Get formatted date$formatted = $item->date('Y-m-d H:i:s');$formatted = $item->date('l, F j, Y');
// Get item URL$url = $item->url();
// Get category URL$catUrl = $item->categoryUrl();
// Check if published$isPublished = $item->isPublished();
// Get edit URL$editUrl = $item->editUrl();
// Get delete URL$deleteUrl = $item->deleteUrl();
// Get excerpt/summary$summary = $item->getSummary(100);$summary = $item->description();
// Get all tags$tags = $item->getTags();
// Get comments$comments = $item->getComments();$commentCount = $item->getCommentCount();
// Get rating$rating = $item->getRating();
// Get rating count$ratingCount = $item->getRatingCount();Lớp ItemHandler
Phần tiêu đề “Lớp ItemHandler”Tổng quan
Phần tiêu đề “Tổng quan”ItemHandler quản lý các hoạt động CRUD cho bài viết.
Tập tin: modules/publisher/class/ItemHandler.php
Truy xuất các mục
Phần tiêu đề “Truy xuất các mục”// Get single item by ID$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
// Get all items$items = $itemHandler->getAll();
// Get items with conditions$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Published only$criteria->add(new Criteria('categoryid', 5)); // Specific category$criteria->setLimit(10);$criteria->setStart(0);$items = $itemHandler->getObjects($criteria);
// Get items by category$items = $itemHandler->getByCategory($categoryId, $limit = 10);
// Get recent items$items = $itemHandler->getRecent($limit = 10);
// Get featured items$items = $itemHandler->getFeatured($limit = 5);
// Count items$total = $itemHandler->getCount($criteria);Tạo mục
Phần tiêu đề “Tạo mục”// Create new item$item = $itemHandler->create();
// Set properties$item->setVar('title', 'Article Title');$item->setVar('body', '<p>Content</p>');$item->setVar('description', 'Short desc');$item->setVar('categoryid', 1);$item->setVar('uid', $userId);$item->setVar('status', 0); // Draft$item->setVar('datesub', time());
// Saveif ($itemHandler->insert($item)) { $itemId = $item->getVar('itemid'); echo "Article created: " . $itemId;} else { echo "Error: " . implode(', ', $item->getErrors());}Cập nhật mục
Phần tiêu đề “Cập nhật mục”// Get item$item = $itemHandler->get($itemId);
// Modify$item->setVar('title', 'Updated Title');$item->setVar('body', '<p>Updated content</p>');$item->setVar('status', 1); // Publish
// Saveif ($itemHandler->insert($item)) { echo "Item updated";} else { echo "Error: " . implode(', ', $item->getErrors());}Xóa mục
Phần tiêu đề “Xóa mục”// Get item$item = $itemHandler->get($itemId);
// Deleteif ($itemHandler->delete($item)) { echo "Item deleted";} else { echo "Error deleting item";}
// Delete by ID$itemHandler->deleteByPrimary($itemId);Hạng mục
Phần tiêu đề “Hạng mục”Tổng quan
Phần tiêu đề “Tổng quan”Category class đại diện cho một danh mục hoặc phần.
Tập tin: modules/publisher/class/Category.php
Phương pháp
Phần tiêu đề “Phương pháp”// Get category ID$catId = $category->getVar('categoryid');$catId = $category->id();
// Get name$name = $category->getVar('name');$name = $category->name();
// Get description$desc = $category->getVar('description');$desc = $category->description();
// Get image$image = $category->getVar('image');$image = $category->image();
// Get parent category$parentId = $category->getVar('parentid');$parentId = $category->parentId();
// Get status$status = $category->getVar('status');
// Get URL$url = $category->url();
// Get item count$count = $category->itemCount();
// Get subcategories$subs = $category->getSubCategories();
// Get parent category object$parent = $category->getParent();Lớp xử lý danh mục
Phần tiêu đề “Lớp xử lý danh mục”Tổng quan
Phần tiêu đề “Tổng quan”CategoryHandler quản lý các hoạt động của danh mục CRUD.
Tập tin: modules/publisher/class/CategoryHandler.php
Truy xuất danh mục
Phần tiêu đề “Truy xuất danh mục”// Get single category$catHandler = xoops_getModuleHandler('Category', 'publisher');$category = $catHandler->get($categoryId);
// Get all categories$categories = $catHandler->getAll();
// Get root categories (no parent)$roots = $catHandler->getRoots();
// Get subcategories$subs = $catHandler->getByParent($parentId);
// Get categories with criteria$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1));$categories = $catHandler->getObjects($criteria);Tạo danh mục
Phần tiêu đề “Tạo danh mục”// Create new$category = $catHandler->create();
// Set values$category->setVar('name', 'News');$category->setVar('description', 'News items');$category->setVar('parentid', 0); // Root level$category->setVar('status', 1);
// Saveif ($catHandler->insert($category)) { $catId = $category->getVar('categoryid');} else { echo "Error";}Cập nhật danh mục
Phần tiêu đề “Cập nhật danh mục”// Get category$category = $catHandler->get($categoryId);
// Modify$category->setVar('name', 'Updated Name');
// Save$catHandler->insert($category);Xóa danh mục
Phần tiêu đề “Xóa danh mục”// Get category$category = $catHandler->get($categoryId);
// Delete$catHandler->delete($category);Chức năng trợ giúp
Phần tiêu đề “Chức năng trợ giúp”Chức năng tiện ích
Phần tiêu đề “Chức năng tiện ích”Trình trợ giúp class cung cấp các chức năng tiện ích:
Tập tin: modules/publisher/class/Helper.php
// Get helper instance$helper = \XoopsModules\Publisher\Helper::getInstance();
// Get module instance$module = $helper->getModule();
// Get handler$itemHandler = $helper->getHandler('Item');$catHandler = $helper->getHandler('Category');
// Get config value$editorName = $helper->getConfig('editor');$itemsPerPage = $helper->getConfig('items_per_page');
// Check permission$canView = $helper->hasPermission('view', $categoryId);$canEdit = $helper->hasPermission('edit', $itemId);$canDelete = $helper->hasPermission('delete', $itemId);$canApprove = $helper->hasPermission('approve');
// Get URL$indexUrl = $helper->url('index.php');$itemUrl = $helper->url('index.php?op=showitem&itemid=' . $itemId);
// Get base path$basePath = $helper->getPath();$templatePath = $helper->getPath('templates');Hàm định dạng
Phần tiêu đề “Hàm định dạng”// Format date$formatted = $helper->formatDate($timestamp, 'Y-m-d');
// Truncate text$excerpt = $helper->truncate($text, $length = 100);
// Sanitize input$clean = $helper->sanitize($input);
// Prepare output$output = $helper->prepare($data);
// Get breadcrumb$breadcrumb = $helper->getBreadcrumb($itemId);JavaScript API
Phần tiêu đề “JavaScript API”Chức năng JavaScript của giao diện người dùng
Phần tiêu đề “Chức năng JavaScript của giao diện người dùng”Nhà xuất bản includes JavaScript API dành cho tương tác giao diện người dùng:
// Include Publisher JS library<script src="/modules/publisher/assets/js/publisher.js"></script>
// Check if Publisher object existsif (typeof Publisher !== 'undefined') { // Use Publisher API}
// Get article datavar item = Publisher.getItem(itemId);console.log(item.title);console.log(item.url);
// Get category datavar category = Publisher.getCategory(categoryId);console.log(category.name);
// Submit ratingPublisher.submitRating(itemId, rating, function(response) { console.log('Rating saved');});
// Load more articlesPublisher.loadMore(categoryId, page, limit, function(articles) { // Handle loaded articles});
// Search articlesPublisher.search(query, function(results) { // Handle search results});Điểm cuối Ajax
Phần tiêu đề “Điểm cuối Ajax”Nhà xuất bản cung cấp điểm cuối AJAX cho các tương tác giao diện người dùng:
// Get article via AJAXfetch('/modules/publisher/ajax.php?op=getItem&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));
// Submit comment via AJAXfetch('/modules/publisher/ajax.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'op=addComment&itemid=' + itemId + '&text=' + comment}).then(response => response.json()).then(data => console.log(data));
// Get ratingsfetch('/modules/publisher/ajax.php?op=getRatings&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));REST API (Nếu được bật)
Phần tiêu đề “REST API (Nếu được bật)”Điểm cuối API
Phần tiêu đề “Điểm cuối API”Nếu Nhà xuất bản hiển thị REST API:
GET /modules/publisher/api/itemsGET /modules/publisher/api/items/{id}GET /modules/publisher/api/categoriesGET /modules/publisher/api/categories/{id}POST /modules/publisher/api/itemsPUT /modules/publisher/api/items/{id}DELETE /modules/publisher/api/items/{id}Ví dụ cuộc gọi API
Phần tiêu đề “Ví dụ cuộc gọi API”// Get items via REST$url = 'http://example.com/modules/publisher/api/items';$response = file_get_contents($url);$items = json_decode($response, true);
// Get single item$url = 'http://example.com/modules/publisher/api/items/1';$response = file_get_contents($url);$item = json_decode($response, true);
// Create item$url = 'http://example.com/modules/publisher/api/items';$data = array( 'title' => 'New Article', 'body' => 'Content here', 'categoryid' => 1);$options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode($data) ));$response = file_get_contents($url, false, stream_context_create($options));Lược đồ cơ sở dữ liệu
Phần tiêu đề “Lược đồ cơ sở dữ liệu”nhà xuất bản_categories
Phần tiêu đề “nhà xuất bản_categories”- categoryid (PK)- name- description- image- parentid (FK)- status- created- modifiednhà xuất bản_items
Phần tiêu đề “nhà xuất bản_items”- itemid (PK)- categoryid (FK)- uid (FK to users)- title- subtitle- description- body- image- status- featured- datesub- datemod- counter (views)nhà xuất bản_comments
Phần tiêu đề “nhà xuất bản_comments”- commentid (PK)- itemid (FK)- uid (FK)- comment- datesub- approvedtập tin nhà xuất bản
Phần tiêu đề “tập tin nhà xuất bản”- fileid (PK)- itemid (FK)- filename- description- uploadedSự kiện & Móc nối
Phần tiêu đề “Sự kiện & Móc nối”Sự kiện của nhà xuất bản
Phần tiêu đề “Sự kiện của nhà xuất bản”// Item created event$modHandler = xoops_getHandler('module');$modHandler->activateModule('publisher');$publisher = xoops_getModuleHandler('Item', 'publisher');xoops_events()->trigger( 'publisher.item.created', array('item' => $item));
// Item updatedxoops_events()->trigger( 'publisher.item.updated', array('item' => $item));
// Item deletedxoops_events()->trigger( 'publisher.item.deleted', array('itemid' => $itemId));
// Article commentedxoops_events()->trigger( 'publisher.comment.added', array('comment' => $comment));Nghe sự kiện
Phần tiêu đề “Nghe sự kiện”// Register event listenerxoops_events()->attach( 'publisher.item.created', array($myClass, 'onItemCreated'));
// Or in pluginpublic function onItemCreated($item) { // Handle item creation}Ví dụ về mã
Phần tiêu đề “Ví dụ về mã”Nhận các bài viết gần đây
Phần tiêu đề “Nhận các bài viết gần đây”<?php// Get recent published articles$itemHandler = xoops_getModuleHandler('Item', 'publisher');$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Published$criteria->setSort('datesub');$criteria->setOrder('DESC');$criteria->setLimit(5);
$items = $itemHandler->getObjects($criteria);
foreach ($items as $item) { echo $item->title() . "\n"; echo $item->date('Y-m-d') . "\n"; echo $item->description() . "\n"; echo "<a href='" . $item->url() . "'>Read More</a>\n\n";}?>Tạo bài viết theo chương trình
Phần tiêu đề “Tạo bài viết theo chương trình”<?php// Create article$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->create();
$item->setVar('title', 'Programmatic Article');$item->setVar('description', 'Created via API');$item->setVar('body', '<p>Full content here</p>');$item->setVar('categoryid', 1);$item->setVar('uid', 1);$item->setVar('status', 1); // Published$item->setVar('datesub', time());
if ($itemHandler->insert($item)) { echo "Article created: " . $item->getVar('itemid');} else { echo "Error: " . implode(', ', $item->getErrors());}?>Nhận bài viết theo danh mục
Phần tiêu đề “Nhận bài viết theo danh mục”<?php// Get category articles$catId = 5;$itemHandler = xoops_getModuleHandler('Item', 'publisher');$items = $itemHandler->getByCategory($catId, $limit = 10);
echo "Articles in category " . $catId . ":\n";foreach ($items as $item) { echo "- " . $item->title() . "\n";}?>Cập nhật trạng thái bài viết
Phần tiêu đề “Cập nhật trạng thái bài viết”<?php// Change article status$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
if ($item) { $item->setVar('status', 1); // Publish
if ($itemHandler->insert($item)) { echo "Article published"; } else { echo "Error publishing article"; }} else { echo "Article not found";}?>Lấy cây danh mục
Phần tiêu đề “Lấy cây danh mục”<?php// Build category tree$catHandler = xoops_getModuleHandler('Category', 'publisher');$roots = $catHandler->getRoots();
function displayTree($category, $level = 0) { echo str_repeat(" ", $level) . $category->name() . "\n";
$subs = $category->getSubCategories(); foreach ($subs as $sub) { displayTree($sub, $level + 1); }}
foreach ($roots as $root) { displayTree($root);}?>Xử lý lỗi
Phần tiêu đề “Xử lý lỗi”Xử lý lỗi
Phần tiêu đề “Xử lý lỗi”<?php// Try/catch error handlingtry { $itemHandler = xoops_getModuleHandler('Item', 'publisher'); $item = $itemHandler->get($itemId);
if (!$item) { throw new Exception('Item not found'); }
$item->setVar('title', 'New Title');
if (!$itemHandler->insert($item)) { throw new Exception('Failed to save item'); }} catch (Exception $e) { error_log('Publisher Error: ' . $e->getMessage()); // Handle error}?>Nhận thông báo lỗi
Phần tiêu đề “Nhận thông báo lỗi”<?php// Get error messages from object$item = $itemHandler->create();// ... set variables ...
if (!$itemHandler->insert($item)) { $errors = $item->getErrors(); foreach ($errors as $error) { echo "Error: " . $error . "\n"; }}?>Tài liệu liên quan
Phần tiêu đề “Tài liệu liên quan”- Móc và sự kiện
- Mẫu tùy chỉnh
- Phân tích mô-đun nhà xuất bản
- Mẫu và Khối trong Nhà xuất bản
- Tạo bài viết
- Quản lý danh mục
Tài nguyên
Phần tiêu đề “Tài nguyên”#publisher #api #reference #code #classes #methods #xoops