Ενότητα FAQ
Ενότητα Συχνές Ερωτήσεις
Ενότητα με τίτλο «Ενότητα Συχνές Ερωτήσεις»Συνήθεις ερωτήσεις και απαντήσεις σχετικά με τις μονάδες XOOPS, την εγκατάσταση και τη διαχείριση.
Εγκατάσταση & Ενεργοποίηση
Ενότητα με τίτλο «Εγκατάσταση & Ενεργοποίηση»# Ε: Πώς μπορώ να εγκαταστήσω μια λειτουργική μονάδα στο XOOPS;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να εγκαταστήσω μια λειτουργική μονάδα στο XOOPS;»Α:
- Κάντε λήψη του αρχείου zip της μονάδας
- Μεταβείτε στο XOOPS Admin > Modules > Manage Modules
- Κάντε κλικ στο “Browse” και επιλέξτε το αρχείο zip
- Κάντε κλικ στο “Μεταφόρτωση”
- Η μονάδα εμφανίζεται στη λίστα (συνήθως απενεργοποιημένη)
- Κάντε κλικ στο εικονίδιο ενεργοποίησης για να το ενεργοποιήσετε
Εναλλακτικά, εξαγάγετε το zip απευθείας στο /xoops_root/modules/ και μεταβείτε στον πίνακα διαχείρισης.
# Ε: Η μεταφόρτωση της μονάδας αποτυγχάνει με “Απόρριψη άδειας”
Ενότητα με τίτλο «# Ε: Η μεταφόρτωση της μονάδας αποτυγχάνει με “Απόρριψη άδειας”»Α: Αυτό είναι ένα ζήτημα άδειας αρχείου:
# Fix module directory permissionschmod 755 /path/to/xoops/modules
# Fix upload directory (if uploading)chmod 777 /path/to/xoops/uploads
# Fix ownership if neededchown -R www-data:www-data /path/to/xoopsΔείτε Αποτυχίες εγκατάστασης μονάδας για περισσότερες λεπτομέρειες.
# Ε: Γιατί δεν μπορώ να δω τη λειτουργική μονάδα στον πίνακα διαχείρισης μετά την εγκατάσταση;
Ενότητα με τίτλο «# Ε: Γιατί δεν μπορώ να δω τη λειτουργική μονάδα στον πίνακα διαχείρισης μετά την εγκατάσταση;»Α: Ελέγξτε τα ακόλουθα:
- Η μονάδα δεν είναι ενεργοποιημένη - Κάντε κλικ στο εικονίδιο του ματιού στη λίστα Ενότητες
- Λείπει η σελίδα διαχειριστή - Η ενότητα πρέπει να έχει
hasAdmin = 1στην έκδοση XOOPS.php - Language files missing - Need
language/english/admin.php - Η προσωρινή μνήμη δεν διαγράφηκε - Εκκαθάριση προσωρινής μνήμης και ανανέωση του προγράμματος περιήγησης
# Clear XOOPS cacherm -rf /path/to/xoops/xoops_data/caches/*# Ε: Πώς μπορώ να απεγκαταστήσω μια λειτουργική μονάδα;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να απεγκαταστήσω μια λειτουργική μονάδα;»Α:
- Μεταβείτε στο XOOPS Admin > Modules > Manage Modules
- Απενεργοποιήστε τη μονάδα (κάντε κλικ στο εικονίδιο του ματιού)
- Κάντε κλικ στο εικονίδιο trash/delete
- Διαγράψτε με μη αυτόματο τρόπο το φάκελο της λειτουργικής μονάδας εάν θέλετε να αφαιρέσετε πλήρως:
rm -rf /path/to/xoops/modules/modulenameΔιαχείριση Ενοτήτων
Ενότητα με τίτλο «Διαχείριση Ενοτήτων»# Ε: Ποια είναι η διαφορά μεταξύ απενεργοποίησης και απεγκατάστασης;
Ενότητα με τίτλο «# Ε: Ποια είναι η διαφορά μεταξύ απενεργοποίησης και απεγκατάστασης;»Α:
- Απενεργοποίηση: Απενεργοποίηση της μονάδας (κάντε κλικ στο εικονίδιο του ματιού). Οι πίνακες βάσεων δεδομένων παραμένουν.
- Απεγκατάσταση: Αφαιρέστε τη μονάδα. Διαγράφει πίνακες βάσης δεδομένων και αφαιρεί από τη λίστα.
Για πραγματική κατάργηση, διαγράψτε επίσης τον φάκελο:
rm -rf modules/modulename# Ε: Πώς μπορώ να ελέγξω εάν μια λειτουργική μονάδα έχει εγκατασταθεί σωστά;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να ελέγξω εάν μια λειτουργική μονάδα έχει εγκατασταθεί σωστά;»Α: Χρησιμοποιήστε το σενάριο εντοπισμού σφαλμάτων:
<?php// Create admin/debug_modules.phprequire_once XOOPS_ROOT_PATH . '/mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
echo "<h1>Module Debug</h1>";
// List all modules$module_handler = xoops_getHandler('module');$modules = $module_handler->getObjects();
foreach ($modules as $module) { echo "<h2>" . $module->getVar('name') . "</h2>"; echo "Status: " . ($module->getVar('isactive') ? "Active" : "Inactive") . "<br>"; echo "Directory: " . $module->getVar('dirname') . "<br>"; echo "Mid: " . $module->getVar('mid') . "<br>"; echo "Version: " . $module->getVar('version') . "<br>";}?># Ε: Μπορώ να εκτελέσω πολλές εκδόσεις της ίδιας μονάδας;
Ενότητα με τίτλο «# Ε: Μπορώ να εκτελέσω πολλές εκδόσεις της ίδιας μονάδας;»Α: Όχι, το XOOPS δεν το υποστηρίζει εγγενώς. Ωστόσο, μπορείτε:
- Δημιουργήστε ένα αντίγραφο με διαφορετικό όνομα καταλόγου:
mymoduleκαιmymodule2 - Ενημερώστε το dirname στην έκδοση xoopsversion και των δύο μονάδων.php
- Ensure unique database table names
Αυτό δεν συνιστάται καθώς μοιράζονται τον ίδιο κωδικό.
Διαμόρφωση μονάδας
Ενότητα με τίτλο «Διαμόρφωση μονάδας»# Ε: Πού μπορώ να διαμορφώσω τις ρυθμίσεις της μονάδας;
Ενότητα με τίτλο «# Ε: Πού μπορώ να διαμορφώσω τις ρυθμίσεις της μονάδας;»Α:
- Μεταβείτε στο XOOPS Διαχειριστής > Ενότητες
- Κάντε κλικ στο εικονίδιο settings/gear δίπλα στη μονάδα
- Διαμορφώστε τις προτιμήσεις
Οι ρυθμίσεις αποθηκεύονται στον πίνακα xoops_config.
Πρόσβαση στον κωδικό:
<?php$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('modulename');$config_handler = xoops_getHandler('config');$settings = $config_handler->getConfigsByCat(0, $module->mid());
foreach ($settings as $setting) { echo $setting->getVar('conf_name') . ": " . $setting->getVar('conf_value');}?># Ε: Πώς ορίζω τις επιλογές διαμόρφωσης της μονάδας;
Ενότητα με τίτλο «# Ε: Πώς ορίζω τις επιλογές διαμόρφωσης της μονάδας;»Α: Στο xoopsversion.php:
<?php$modversion['config'] = [ [ 'name' => 'items_per_page', 'title' => '_AM_MYMODULE_ITEMS_PER_PAGE', 'description' => '_AM_MYMODULE_ITEMS_PER_PAGE_DESC', 'formtype' => 'text', 'valuetype' => 'int', 'default' => 10 ], [ 'name' => 'enable_feature', 'title' => '_AM_MYMODULE_ENABLE_FEATURE', 'description' => '_AM_MYMODULE_ENABLE_FEATURE_DESC', 'formtype' => 'yesno', 'valuetype' => 'bool', 'default' => 1 ]];?>Χαρακτηριστικά ενότητας
Ενότητα με τίτλο «Χαρακτηριστικά ενότητας»# Ε: Πώς μπορώ να προσθέσω μια σελίδα διαχειριστή στην ενότητα μου;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να προσθέσω μια σελίδα διαχειριστή στην ενότητα μου;»Α: Δημιουργήστε τη δομή:
modules/mymodule/├── admin/│ ├── index.php│ ├── menu.php│ └── menu_en.phpΣτο xoopsversion.php:
<?php$modversion['hasAdmin'] = 1;$modversion['adminindex'] = 'admin/index.php';?>Δημιουργία admin/index.php:
<?phprequire_once XOOPS_ROOT_PATH . '/kernel/admin.php';
xoops_cp_header();echo "<h1>Module Administration</h1>";xoops_cp_footer();?># Ε: Πώς μπορώ να προσθέσω λειτουργικότητα αναζήτησης στη λειτουργική μονάδα μου;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να προσθέσω λειτουργικότητα αναζήτησης στη λειτουργική μονάδα μου;»Α:
- Ορισμός στο xoopsversion.php:
<?php$modversion['hasSearch'] = 1;$modversion['search'] = 'search.php';?>- Δημιουργήστε
search.php:
<?phpfunction mymodule_search($queryArray, $andor, $limit, $offset) { // Search implementation $results = []; return $results;}?># Ε: Πώς μπορώ να προσθέσω ειδοποιήσεις στη μονάδα μου;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να προσθέσω ειδοποιήσεις στη μονάδα μου;»Α:
- Ορισμός στο xoopsversion.php:
<?php$modversion['hasNotification'] = 1;$modversion['notification_categories'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];$modversion['notifications'] = [ ['name' => 'item_published', 'title' => '_NOT_ITEM_PUBLISHED']];?>- Ενεργοποίηση ειδοποίησης σε κωδικό:
<?php$notification_handler = xoops_getHandler('notification');$notification_handler->triggerEvent( 'item_published', $item_id, 'Item published', 'description');?>Δικαιώματα ενότητας
Ενότητα με τίτλο «Δικαιώματα ενότητας»# Ε: Πώς μπορώ να ορίσω δικαιώματα λειτουργικής μονάδας;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να ορίσω δικαιώματα λειτουργικής μονάδας;»Α:
- Μεταβείτε στο XOOPS Διαχειριστής > Ενότητες > Δικαιώματα μονάδας
- Επιλέξτε τη μονάδα
- Επιλέξτε user/group και επίπεδο άδειας
- Αποθήκευση
Στον κωδικό:
<?php// Check if user can access moduleif (!xoops_isUser()) { exit('Login required');}
// Check specific permission$mperm_handler = xoops_getHandler('member_permission');$module_handler = xoops_getHandler('module');$module = $module_handler->getByDirname('mymodule');
if (!$mperm_handler->userCanAccess($module->mid())) { exit('Access denied');}?>Βάση δεδομένων ενότητας
Ενότητα με τίτλο «Βάση δεδομένων ενότητας»# Ε: Πού αποθηκεύονται οι πίνακες βάσης δεδομένων λειτουργιών;
Ενότητα με τίτλο «# Ε: Πού αποθηκεύονται οι πίνακες βάσης δεδομένων λειτουργιών;»Α: Όλα στην κύρια βάση δεδομένων XOOPS, με πρόθεμα με το πρόθεμα του πίνακα σας (συνήθως xoops_):
# List all module tablesmysql> SHOW TABLES LIKE 'xoops_mymodule_%';
# Or in PHP<?php$result = $GLOBALS['xoopsDB']->query( "SHOW TABLES LIKE '" . XOOPS_DB_PREFIX . "mymodule_%'");while ($row = $result->fetch_assoc()) { print_r($row);}?># Ε: Πώς μπορώ να ενημερώσω πίνακες βάσης δεδομένων λειτουργιών;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να ενημερώσω πίνακες βάσης δεδομένων λειτουργιών;»Α: Δημιουργήστε ένα σενάριο ενημέρωσης στη λειτουργική μονάδα σας:
<?phprequire_once '../../mainfile.php';
if (!is_object($xoopsUser) || !$xoopsUser->isAdmin()) { exit('Admin only');}
// Add new column$sql = "ALTER TABLE `" . XOOPS_DB_PREFIX . "mymodule_items` ADD COLUMN `new_field` VARCHAR(255)";
if ($GLOBALS['xoopsDB']->query($sql)) { echo "✓ Updated successfully";} else { echo "✗ Error: " . $GLOBALS['xoopsDB']->error;}?>Εξαρτήσεις ενότητας
Ενότητα με τίτλο «Εξαρτήσεις ενότητας»# Ε: Πώς μπορώ να ελέγξω εάν έχουν εγκατασταθεί οι απαιτούμενες μονάδες;
Ενότητα με τίτλο «# Ε: Πώς μπορώ να ελέγξω εάν έχουν εγκατασταθεί οι απαιτούμενες μονάδες;»ΕΝΑ:
<?php$module_handler = xoops_getHandler('module');
// Check if a module exists$module = $module_handler->getByDirname('required_module');
if (!$module || !$module->getVar('isactive')) { die('Error: required_module is not installed or active');}?># Ε: Μπορούν οι μονάδες να εξαρτώνται από άλλες μονάδες;
Ενότητα με τίτλο «# Ε: Μπορούν οι μονάδες να εξαρτώνται από άλλες μονάδες;»Α: Ναι, δηλώστε στο xoopsversion.php:
<?php$modversion['dependencies'] = [ [ 'dirname' => 'required_module', 'version_min' => '1.0', 'version_max' => 0, // 0 = unlimited 'order' => 1 ]];?>Αντιμετώπιση προβλημάτων
Ενότητα με τίτλο «Αντιμετώπιση προβλημάτων»# Ε: Η μονάδα εμφανίζεται στη λίστα αλλά δεν ενεργοποιείται
Ενότητα με τίτλο «# Ε: Η μονάδα εμφανίζεται στη λίστα αλλά δεν ενεργοποιείται»Α: Έλεγχος:
- xoopsversion.php syntax - Use PHP linter:
php -l modules/mymodule/xoopsversion.php- Αρχείο βάσης δεδομένων SQL:
# Check SQL syntaxgrep -n "CREATE TABLE" modules/mymodule/sql/mysql.sql- Αρχεία γλώσσας:
ls -la modules/mymodule/language/english/Δείτε Αποτυχίες εγκατάστασης μονάδας για λεπτομερή διαγνωστικά.
# Ε: Η μονάδα ενεργοποιήθηκε αλλά δεν εμφανίζεται στον κύριο ιστότοπο
Ενότητα με τίτλο «# Ε: Η μονάδα ενεργοποιήθηκε αλλά δεν εμφανίζεται στον κύριο ιστότοπο»Α:
- Ορίστε
hasMain = 1στο xoopsversion.php:
<?php$modversion['hasMain'] = 1;$modversion['main_file'] = 'index.php';?>- Δημιουργήστε
modules/mymodule/index.php:
<?phprequire_once '../../mainfile.php';include_once XOOPS_ROOT_PATH . '/header.php';
echo "Welcome to my module";
include_once XOOPS_ROOT_PATH . '/footer.php';?># Ε: Η ενότητα προκαλεί “λευκή οθόνη θανάτου”
Ενότητα με τίτλο «# Ε: Η ενότητα προκαλεί “λευκή οθόνη θανάτου”»Α: Ενεργοποιήστε τον εντοπισμό σφαλμάτων για να βρείτε το σφάλμα:
<?php// In mainfile.phperror_reporting(E_ALL);ini_set('display_errors', '1');define('XOOPS_DEBUG_LEVEL', 2);?>Ελέγξτε το αρχείο καταγραφής σφαλμάτων:
tail -100 /var/log/php/error.logtail -100 /var/log/apache2/error.logΔείτε το White Screen of Death για λύσεις.
Απόδοση
Ενότητα με τίτλο «Απόδοση»# Ε: Η ενότητα είναι αργή, πώς μπορώ να βελτιστοποιήσω;
Ενότητα με τίτλο «# Ε: Η ενότητα είναι αργή, πώς μπορώ να βελτιστοποιήσω;»Α:
- Έλεγχος ερωτημάτων βάσης δεδομένων - Χρησιμοποιήστε την καταγραφή ερωτημάτων
- Δεδομένα προσωρινής μνήμης - Χρησιμοποιήστε την προσωρινή μνήμη XOOPS:
<?php$cache = xoops_cache_handler::getInstance();$data = $cache->read('mykey');if ($data === false) { $data = expensive_operation(); $cache->write('mykey', $data, 3600); // 1 hour}?>- Βελτιστοποίηση προτύπων - Αποφύγετε τους βρόχους στα πρότυπα
- Ενεργοποιήστε την προσωρινή μνήμη PHP opcode cache - APCu, XDebug, κ.λπ.
Δείτε Performance FAQ για περισσότερες λεπτομέρειες.
Ανάπτυξη ενότητας
Ενότητα με τίτλο «Ανάπτυξη ενότητας»# Ε: Πού μπορώ να βρω τεκμηρίωση ανάπτυξης ενότητας;
Ενότητα με τίτλο «# Ε: Πού μπορώ να βρω τεκμηρίωση ανάπτυξης ενότητας;»Α: Δείτε:
- Οδηγός Ανάπτυξης Ενοτήτων
- Δομή ενότητας
- Δημιουργία της πρώτης σας ενότητας
Σχετική τεκμηρίωση
Ενότητα με τίτλο «Σχετική τεκμηρίωση»- Βλάβες εγκατάστασης μονάδας
- Δομή ενότητας
- Απόδοση FAQ
- Ενεργοποιήστε τη λειτουργία εντοπισμού σφαλμάτων