система онлайн-бронирования
г. Донецк, Украина, ул. Артёма, 87
+38 (062) 332 33 32, 332-27-71
ЗАБРОНИРОВАТЬ
НОМЕР

Статьи

Внутрішня перелінковка сторінок сайту Joomla - кільця категорій

  1. Суть проблеми перелинковки матеріалів різних категорій
  2. Ідея автоматичної перелинковки матеріалів категорій кільцями
  3. Схема внутрішньої перелинковки сторінок кільцями категорій
  4. Створюємо скрипт множинної перелинковки категорій кільцями з матеріалів для Joomla
  5. Налаштування xml-файлу визначення модуля Joomla
  6. Виправлення helper.php - функція вибору номерів статей із сусідньої категорії
  7. Виправлення helper.php - отримання ідентифікатора сусідній категорії
  8. Виправлення helper.php - отримуємо все елементи з сусідньої категорії
  9. Установка і настройка готового модуля перелинковки

- Автор: Ігор (Адміністратор)

Внутрішня перелінковка сторінок сайту це не тільки інструмент для пошукових машин Внутрішня перелінковка сторінок сайту це не тільки інструмент для пошукових машин. Хоча, слід визнати, що правильна перелінковка дійсно сприятливо впливає на позиції та індексацію сторінок сайту. Все ж перелинковка це ще і відмінний спосіб ознайомити ваших читачів з іншими матеріалами сайту. У простому вигляді, мова йде про схожих або пов'язаних матеріалах, як, наприклад, посилання на огляд графічних редакторів у статті створення мініатюри або логотипу сайту . Однак, на цьому варіації перелинковки не закінчуються. Користувачів може так само цікавити попередні і подальші матеріали, останні матеріали і багато іншого. Частина з них створюється в ручному режимі, а частина в автоматичному.

Безумовно, ручна простановка посилань дає більш кращий ефект, так як перед тим, як поставити ту чи іншу посилання в текст (або ж в модуль), ви враховуєте її актуальність і переглядаєте результат кожної сторінки. Однак, завжди буде бажання мати під рукою автоматизований спосіб перелинковки сторінок. Крім того, в деяких випадках без автоматизації просто не обійтися. Особливо, коли у вас вже не перша сотня матеріалів на сайті і перспектива провести кілька ночей за рутинним проставленням посилань трохи пригнічує.

У цій же статті буде розглянуто ідея побудови множинних кілець між категоріями, а так само її реалізація для Joomla 2.5+ (для Joomla 3.0 і вище даний модуль повинен так само підходити, але спеціального тестування не проводилося).

Суть проблеми перелинковки матеріалів різних категорій

В одній з попередніх статей розглядався модуль для множинної кільцевої перелинковки матеріалів однієї категорії . Його основними перевагами є автоматична, керована і контрольована організація взаємозв'язків між матеріалами однієї категорії, яка мінімізує втрату ваги при випаданні одній зі сторінок всередині кілець. Однак, даний спосіб обмежений тільки матеріалами однієї категорії. Іншими словами, розподіл ваги кільця не йде далі однієї категорії. Якщо трохи простіше, то весь накопичений вага всередині категорій з великою кількістю матеріалів дуже слабо перетікає до матеріалів інших категорій. Безумовно, за рахунок головного меню з усіма категоріями, яке є практично на кожному сайті, утворюються кільця. Проте, за фактом, категорії залишаються слабо пов'язаними між собою.

Примітка: Як факт, але на даному сайті, після впровадження кільцевої перелинковки матеріалів категорії, багато статей, які ніяк не індексувалися, потрапили в основний індекс.

Якщо переносити вищезазначені слова на точку зору звичайного користувача, то будь-який читач, який відкрив статтю певного розділу, практично не бачить зв'язку з іншими категоріями. Найчастіше, перед його очима або випадково проставлена ​​перелинковка всередині статей, або модулі виду "останні матеріали", "рубрики", "архів", "схожі матеріали" і так далі. Перебільшуючи, на сторінці видно або хаотично проставлені посилання (постійно мінливі останні матеріали, посилання в статті і так далі), або зв'язки всередині однієї категорій, включаючи організацію за рахунок тегів і ключів. Якщо ще більше перебільшувати і говорити простою мовою, то ймовірність, що користувач зазирне хоча б в сусідню категорію, на повних порах прагне до нуля. Адже, ентузіастів і альтруїстів не так вже й багато. Ні, ну чесно. Згадайте хоча б себе. Чи часто ви, заходячи на незнайомі сайти, нестримно рвалися обстежити його вздовж і поперек? Безумовно, існують і такі проекти, але тут ключове слово "існують". А тепер, спробуйте з урахуванням вищесказаних слів, подивитися на картинку зі стандартною деревовидної структурою:

Примітка: Тим не менш, важливо розуміти, що мова йде тільки про те, що бачить читач і не більше.

Примітка: Тим не менш, важливо розуміти, що мова йде тільки про те, що бачить читач і не більше

У підставі дерева знаходиться головна сторінка сайту. Далі йдуть розділи (категорії, теги і так далі). І в самому низу вже статті. А тепер, просто уявіть, що користувач відкрив сторінку в нижньому лівому кутку, і запитайте "як йому дістатися до сторінки в правому нижньому кутку, якщо він навіть про її існування не знає?". Звичайно, в статті може бути просто посилання на цю статтю, але робити зі статті набір посилань, щоб можна було дістатися до всіх сторінок, - далеко не найкраще рішення. Але, все ж щось з цим можна зробити.

Ідея автоматичної перелинковки матеріалів категорій кільцями

Тут і виникає ідея автоматичної перелинковки матеріалів різних категорій таким чином, щоб утворити з них кільця, що в теорії і при вдалому складання обставин дозволить користувачам пройтися по всіх категоріях сайту і повноцінно оцінити його. У найпростішому вигляді, мова йде про ситуацію, коли кожен матеріал з однієї категорії посилається на матеріал із сусідньої категорії. Таким чином, з усіх категорій, в яких є хоча б один матеріал, можна утворити кільце. Однак, одного кільця дуже мало. Тому має сенс пов'язувати в кільця кілька матеріалів з кожної категорії. Так само необхідно враховувати, що кількість матеріалів в категоріях зазвичай різний. Рідко можна знайти сайти, де всі категорії сходяться в точності за кількістю статей. Найчастіше ж, все навпаки (десь 20 статей, десь 100 і так далі). Але, це ще не всі умови і обмеження. Крім того, така перелінковка не повинна бути миготливої, так як посилання починають набирати вагу тільки з часом, і повинна бути керованою, тобто враховувати всі додані статті на сайт в автоматичному режимі таким чином, що ви завжди будете знати, до чого призведе додавання матеріалу і як воно відіб'ється на структурі.

Якщо подивитися на страшну картинку трохи вище, то це приблизно той результат, якого необхідно досягти. Коли кілець між категоріями створюється настільки багато, що випадання однієї сторінки буде швидко мінімізуватися. І реалізувати це досить легко. Для цього необхідно використовувати лише кілька правил.

  1. Всі матеріали кожного розділу упорядковано в певному порядку. Наприклад, за датою створення.
  2. Кожен матеріал посилається на кілька матеріалів з сусідньої категорії. Наприклад, посилаємося на 5-6 матеріалів з сусіднього розділу.
  3. Номер матеріалу по порядку визначає стартову позицію для вибору матеріалів із сусідньої категорії. Припустимо в двох категоріях є по 10 статей. Якщо ми відкриваємо 4-ю по порядку статтю, то першим матеріалом з сусіднього розділу так же повинен бути четвертий.
  4. Щоб мінімізувати велику різницю в кількості статей, кожен наступний матеріал може вибиратися через обраний проміжок. Наприклад, через два (1-3-5-7 -...)
  5. І останнє. Якщо при підборі статей ми досягли останньої статті, то продовжуємо пошук з самого початку списку. Таким чином, останні статті будуть посилатися на перші статті сусідній категорії.

Можливо, правила вам здалися трохи складними, але досить один раз уявити (або в крайньому випадку намалювати на листку паперу; ну, в зовсім крайньому на пергаменті) і все стане зрозуміло.

Схема внутрішньої перелинковки сторінок кільцями категорій

Отже з ідеєю визначилися. Необхідно визначити схему, по якій буде відбуватися внутрішня перелінковка сторінок кільцями категорій. Найголовнішим невизначеним моментом є порядок сортування. Проте, досить згадати, що алгоритм повинен забезпечувати довговічність посилань, і стає зрозуміло, що в якості порядку сортування повинно бути умова, яке дуже рідко змінюється або взагалі ніколи не змінюється. І перше, що спадає на думку, це або ідентифікатори, або дата створення. В даному випадку, прив'язуватися до ідентифікаторів буде не дуже гарною ідеєю, як би це не здалося дивним. Причина в тому, що дата створення, частіше за все, буде більш стабільним ознакою сортування (і тільки сортування, так як дат занадто багато і тому мало хто навіть на неї погляд кине). Наприклад, якщо з якихось причин, вам доведеться копіювати або пересоздавать зі збереженням атрибутів матеріали, то їх ідентифікатори, рівно як і дати модифікації і публікації, можуть легко змінитися, а ось дата створення немає (все та ж причина - це поле на тлі інших викликає малий інтерес). Тому за основу для упорядкування статей було взято ознака дати створення.

Тепер, розглянемо 4 варіанти упорядкування для вибору найбільш стабільного, щоб забезпечувати довговічність посилань.

Тепер, розглянемо 4 варіанти упорядкування для вибору найбільш стабільного, щоб забезпечувати довговічність посилань

Перший варіант. Зв'язування останніх матеріалів з останніми. Проблема очевидна. Варто додати статтю в одну з категорій, як тут же почнуть змінюватися посилання другими статей. Тому цей варіант відпадає миттєво.

Другий варіант. Зв'язування останніх матеріалів зі старими. Проблема так само залишається, хоч і частково. Варто додати в категорію один матеріал, так відразу все зв'язку зрушити на одну посилання, що на сайті з частим оновленням матеріалів означатиме неймовірно швидке миготіння посилань.

Третій варіант. Зв'язування старих матеріалів зі старим. В такому випадку, додавання статей в будь-яку категорії не буде приводити до зрушень посилань. Підходящий варіант.

Четвертий варіант. Зв'язування старих і останніх матеріалів. Проблема залишається. Варто додати матеріал в сусідню категорію, як порядок посилань в поточному розділі порушиться. Що так само призведе до частого подмаргіванію посилань.

Як бачите, найбільш оптимальний варіант - це третій варіант. Безумовно, він так само не бездоганний, так як у останніх матеріалів будуть змінюватися посилання до тих пір, поки кількість матеріалів у сусідній категорії не збільшиться настільки, що не доведеться брати найперші посилання. Складна фраза. але якщо повернутися до пергаменту, то все стане зрозуміло. Проте, все ж цей варіант найстабільніший з розглянутих і з часом він дозволить створити досить міцні зв'язки між матеріалами в підставі сайту.

Створюємо скрипт множинної перелинковки категорій кільцями з матеріалів для Joomla

Перш, ніж приступати до створення скрипта множинної перелинковки матеріалів категорій кільцями в Joomla, необхідно визначитися зі списком вимог і обмежень для скрипта

  • Автоматичне додавання матеріалів. Кожен доданий матеріал повинен в автоматичному режимі додаватися, щоб не доводилося про це дбати.
  • Довговічність посилань. Посилання по максимуму повинні бути не кліпаючи (кокетливий моргання в житті може і виглядає приємно, але пошуковим системам не подобається). Якщо посилання будуть постійно змінюватися, то особливої ​​користі від таких посилань не буде.
  • Простота настройки. Модуль повинен налаштовуватися дуже просто і в одному місці.
  • Можливість обхопити як можна більше матеріалів. Посилання повинні бути різноманітними. Це дозволить створити досить багато кілець.
  • Повинні бути можливості виключати і вказувати порядок категорій. Практично на кожному сайті є категорії, які призначені тільки для технічних цілей, тому їх необхідно виключати. Крім того, повинна бути можливість задавати порядок категорій, щоб пропонувати читачам найбільш релевантну інформацію.

Отже, з умовами та вимогами зрозуміло, можна приступати до реалізації. В якості базового проекту був узятий модуль перелинковки з попередньої статті, а так само підключена можливість створення мініатюр (В статті вказується, як підключити до сайту і налаштувати необхідний файл php; якщо вам не потрібні мініатюри, то ви завжди можете підправити відображення модуля ).

Так як змін в модулі було досить багато і більшість з них було косметичних (наприклад, заміна назв змінних і файлів, зміна рядків локалізації та інше), то в рамках статті наводяться тільки найбільш важливі. Але, не хвилюйтеся, посилання на вихідний проект модуля є в кінці статті, так що все залишилися зміни ви легко знайдете в архіві (і не доведеться сердитися на автора).

Налаштування xml-файлу визначення модуля Joomla

Перше, що необхідно підправити, - це xml-файл модуля. Врахуйте, що в модуль додалися не тільки звичайні параметри, але і налаштування для кешування, так як на відміну від joomla модуля перелинковки статей однієї категорії, sql-запити до бази даних стали більш вимогливими. Ось набір параметрів:

<Fields name = "params"> <fieldset name = "basic"> <field name = "isMain" type = "radio" default = "1" label = "MOD_CIRCLE_CAT_BY_MAT_ISMAIN" description = "MOD_CIRCLE_CAT_BY_MAT_ISMAIN_DESC"> <option value = "1 "> Так </ option> <option value =" 0 "> Ні </ option> </ field> <field name =" exceptCat "type =" text "default =" "label =" MOD_CIRCLE_CAT_BY_MAT_EXCEPTCAT "description =" MOD_CIRCLE_CAT_BY_MAT_EXCEPTCAT_DESC " > </ field> <field name = "orderCat" type = "text" default = "" label = "MOD_CIRCLE_CAT_BY_MAT_ORDERCAT" description = "MOD_CIRCLE_CAT_BY_MAT_ORDERCAT_DESC"> </ field> <field name = "mat_number" type = "integer" default = "5" first = "1" last = "50" step = "1" label = "MOD_CIRCLE_CAT_BY_MAT_LINKS_MAT_LBL" description = "MOD_CIRCLE_CAT_BY_MAT_LINKS_MAT_LBL_DESC" /> <field name = "shift_number" type = "integer" default = "1" first = " 1 "last =" 50 "step =" 1 "label =" MOD_CIRCLE_CAT_BY_MAT_SHIFT_MAT_LBL "description =" MOD_CIRCLE_CAT_BY_MAT_SHIFT_MAT_LBL_DESC "/> </ fieldset> <fieldset name =" advanced "> <field name =" cache "type =" list "default = "1" la bel = "COM_MODULES_FIELD_CACHING_LABEL" description = "COM_MODULES_FIELD_CACHING_DESC"> <option value = "0"> COM_MODULES_FIELD_VALUE_NOCACHING </ option> <option value = "1"> JGLOBAL_USE_GLOBAL </ option> </ field> <field name = "cache_time" type = "text" default = "900" label = "COM_MODULES_FIELD_CACHE_TIME_LABEL" description = "COM_MODULES_FIELD_CACHE_TIME_DESC" /> <field name = "cachemode" type = "hidden" default = "itemid"> <option value = "itemid"> </ option> </ field> </ fieldset> </ fields>

Основні зміни. Перейменовані і додані наступні основні параметри: "mat_number" (кількість посилань на сусідню категорію), "shift_number" (проміжок або зсув для вибору наступного матеріалу в сусідній категорії), "orderCat" (текстове поле, де в ручну через кому вказується порядок проходження категорій ). Додані додаткові параметри для кешування: "cachemode" (тип кешування), "cache_time" (час кешування), "cache" (включення кешування, якщо вона була придбана глобально). На цьому основні зміни в xml-файлі закінчені.

Виправлення helper.php - функція вибору номерів статей із сусідньої категорії

Тепер, необхідно написати функцію, яка буде формувати номера статей для вибору із сусідньої категорії. Для цього додамо в код helper.php функцію getMaterialWhereForModule:

// Формуємо умова для вибірки id статей function getMaterialWhereForModule ($ startPart, $ materialNumber, $ linksCount, $ shiftCount, $ maxCount) {if ($ maxCount == 0) return ''; $ Result = '('; $ findElements = array (); $ matRownum = 0; $ shift = 0; // Якщо зсув більше кількості матеріалів, то обмежуємо його if ($ shiftCount> = $ maxCount) $ shift = $ maxCount = = 1? 1: $ maxCount - 1; // інакше просто запам'ятовуємо зрушення else $ shift = $ shiftCount; // Визначаємо стартову позицію $ matRownum = ($ shift + $ materialNumber)% $ maxCount; if ($ matRownum == 0) $ matRownum = $ maxCount; // проходить по кільцю рівно стільки разів, скільки потрібно посилань for ($ i = 0; $ i <$ linksCount; $ i ++) {if (! in_array ($ matRownum, $ findElements)) {$ findElements [] = $ matRownum;} // Зрушуємо елемент $ matRownum = ($ matRownum + $ shift)% $ maxCount; if ($ matRownum == 0) $ matRownum = $ maxCount;} // Якщо знайшлося менше посилань, ніж потрібно, але елементи все ще є, // то просто додаємо найближчі елементи до матеріалу if (count ($ findElements) <$ linksCount && count ($ findElements) <$ maxCount) {$ addingCounter = ($ materialNumber + 1)% $ maxCount; if ($ addingCounter == 0) $ addingCounter = $ maxCount; // Заповнюємо набір поки або не знайдемо потрібну кількість посилань, або не закінчиться набір доступних посилань while (count ($ findElements) <$ linksCount && count ($ findElements) <$ maxCount) {// Якщо елемент немає в масиві, то додаємо його if (! in_array ($ addingCounter, $ findElements)) {$ findElements [] = $ addingCounter; } // Зрушуємо елемент $ addingCounter = ($ addingCounter + 1)% $ maxCount; if ($ addingCounter == 0) $ addingCounter = $ maxCount; }} // Формуємо набір for ($ i = 0; $ i <count ($ findElements); $ i ++) {$ result. = $ FindElements [$ i]; if ($ i + 1! = count ($ findElements)) $ result. = ','; } Return $ startPart. $ Result. ')'; }

Функція досить просто і забезпечена докладними коментарями, так що ви в ній легко розберетеся. Єдине уточнення, в завдання цієї функції входить формування частини умови для sql-запиту, а саме конструкції "IN (...)".

Виправлення helper.php - отримання ідентифікатора сусідній категорії

Тепер необхідно додати в функцію getList отримання ідентифікатора сусідній категорії (якщо вона не була визначена в параметрах), в якій є хоча б один матеріал, доступний читачам.

// Отримуємо елементи номер наступної категорії, якщо це можливо if (($ this-> isArticle () || $ this-> isCategory ()) && ($ menu-> getActive ()! = $ Menu-> getDefault ()) ) {// Отримуємо наступну категорію // Якщо зазначений порядок для елемента if (! empty ($ orderCat) && is_array ($ orderCat) && in_array ($ idCat, $ orderCat) && array_search ($ idCat, $ orderCat) <count ($ orderCat) - 1) {$ nextCatID = $ orderCat [array_search ($ idCat, $ orderCat) + 1]; } // Інакше шукаємо наступну категорію з урахуванням кільця else {$ queryGetNextCat = 'select a.id from (select distinct cat.id, 0 as afterCircle from #__categories cat join #__content mat on cat.id = mat.catid and mat. state> 0 and (mat.publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat.publish_up <NOW ()) and cat.published> 0 where cat.id> '. $ idCat. ''. $ this-> getExceptWhereForCatSearch ( 'and cat.id not in', $ exceptCat). ''. $ this-> getAccessWhereForUser ( 'and mat.access', $ user). ''. $ this- > getAccessWhereForUser ( 'and cat.access', $ user). 'union select distinct cat.id, 1 as afterCircle from #__categories cat join #__content mat on cat.id = mat.catid and mat.state> 0 and (mat .publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat.publish_up <NOW ()) and cat.published> 0 where cat.id < '. $ idCat.' '. $ this-> getExceptWhereForCatSearch ( 'and cat.id not in', $ exceptCat). ''. $ this -> getAccessWhereForUser ( 'and mat.access', $ user). ''. $ This-> getAccessWhereForUser ( 'and cat.access', $ user). ') A order by a.afterCircle asc, id asc limit 1' ; $ Db-> setQuery ($ queryGetNextCat); $ NextCatID = $ db-> loadResult (); }}

Як бачите в основі даної частини лежить один великий по тексту, але простий за змістом, sql-запит до БД. Суть його полягає в тому, що ми отримуємо список всіх категорій (виключаючи поточну категорію і зазначені категорії в модулі), потім сортуємо його і беремо перший відповідний ідентифікатор. Єдиним, що може здатися складним, це параметри для фільтрації, але якщо ви придивіться уважно, то вони просто фільтрують всі доступні користувачеві матеріали на сайті в даний момент часу (а так як фільтрів кілька, то створюється об'єм).

Виправлення helper.php - отримуємо все елементи з сусідньої категорії

Тепер, потрібно сформувати запити для отримання елементів. І тут є три варіанти.

Варіант перший. Відкрили головну сторінку сайту або ж сторінку не відноситься до стандартними типами категорії і матеріал. Це означає, що підібрати сусідню категорію просто неможливо (в загальному випадку). Тому просто повертаємо випадкові матеріали.

// Інакше формуємо випадковий висновок статей з усіх доступних категорій else {$ queryGetMaterials = 'select id, catid, \' \ 'as ​​link, title, access, alias, introtext from #__content mat where mat.state> 0 and (mat. publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat.publish_up <NOW ()) '. $ this-> getExceptWhereForCatSearch (' and mat.catid not in ', $ exceptCat). ' '. $ This-> getAccessWhereForUser (' and mat.access ', $ user).' order by rand () limit '. $ linksCount.' '; }

Другий варіант. Відкрили сторінку категорії. Це означає, що підібрати сусідню категорію можна, але не можна визначити номери матеріалів. Тому, виводимо випадкові матеріали із сусідньої категорії.

// Якщо на сторінці відображена категорія і є сусідня категорія, // то беремо випадкові статті з наступної категорії else if ($ this-> isCategory () &&! Empty ($ nextCatID)) {$ queryGetMaterials = 'select id, catid, \ '\' as link, title, access, alias, introtext from #__content mat where mat.state> 0 and (mat.publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat. publish_up <NOW ()) '. $ this-> getExceptWhereForCatSearch (' and mat.catid not in ', $ exceptCat).' and mat.catid = '. $ nextCatID.' '. $ This-> getAccessWhereForUser (' and mat.access ', $ user).' order by rand () limit '. $ linksCount.' '; }

Третій варіант. Відкрили сторінку матеріалу. Це означає, що підібрати сусідню категорію можна, так само як і обчислити необхідні номери для вибору матеріалів. Однак, в даному випадку одним запитом не обійтися і їх буде три. Перший повертає номер поточної статті щодо інших матеріалів в категорії. Другий отримує кількість доступних читачеві матеріалів в сусідній категорії. І нарешті, третій запит - це sql-запит на отримання необхідних статей в joomla.

$ QueryGetMaterials = ''; // Якщо на сторінці відображена стаття і є сусідня категорія, if ($ this-> isArticle () &&! Empty ($ nextCatID)) {// Отримуємо номер елемента в списку $ db-> setQuery ( 'select rownum from (select * , @rownum: = @rownum + 1 as rownum from #__content mat, (select @rownum: = 0) a where mat.state> 0 and (mat.publish_down is null or mat.publish_down> = NOW ()) and ( mat.publish_up is null or mat.publish_up <NOW ()) '. $ this-> getAccessWhereForUser (' and mat.access ', $ user).' and mat.catid = '. $ idCat.' order by mat.created ) a where id = '. $ idMat.' '); $ MaterialNumber = $ db-> loadResult (); // Отримуємо кількість статей в потрібній категорії // Отримуємо номер елемента в списку $ db-> setQuery ( 'select count (*) from #__content mat where mat.state> 0 and (mat.publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat.publish_up <NOW ()) '. $ this-> getAccessWhereForUser (' and mat.access ', $ user).' and mat.catid = '. $ nextCatID. ''); $ MaxCount = $ db-> loadResult (); // Формуємо підсумковий запит $ queryGetMaterials = 'select id, catid, \' \ 'as ​​link, title, access, alias, introtext from (select *, @rownum: = @rownum + 1 as rownum from #__content mat, (select @rownum: = 0) a where mat.state> 0 and (mat.publish_down is null or mat.publish_down> = NOW ()) and (mat.publish_up is null or mat.publish_up <NOW ()) '. $ this -> getAccessWhereForUser ( 'and mat.access', $ user). 'and mat.catid ='. $ nextCatID. 'order by mat.created) a where'. $ this-> getMaterialWhereForModule ( 'a.rownum in', $ materialNumber, $ linksCount, $ shiftCount, $ maxCount). ' '; }

Після редагування основних частин, можна приступати до установки і налаштування модуля. Врахуйте, що так як були наведені тільки основні зміни в файлах, для наступного пункту необхідно використовувати архів, який доступний в кінці статті.

Установка і настройка готового модуля перелинковки

Тепер, можна приступити до самого приємного, до встановлення та налаштування готового модуля перелинковки категорій.

Відкрийте "менеджер розширень" в меню панелі адміністратора Joomla, а потім завантажити та встановити архів з модулем.

Примітка: Для тих, хто ще з цією особливістю не знайомий, врахуйте, що модуль повинен бути упакований в zip-архів .

Як тільки ви встановите модуль, в загальному списку модулів з'явиться вимкнений модуль кільцевої перелинковки матеріалів між категоріями (хоч і довге, але зате коректне назву).

Примітка: Тип даного модуля буде доступний в інтерфейсі налаштування модулів, так що якщо ви видалите його випадково, то не потрібно намагатися повторно встановлювати модуль. Крім того, для створення декількох кілець категорій або ж будівлі різних напрямків, ви так само можете створити ще кілька модулів, так як їх налаштування незалежні один від одного

Крім того, для створення декількох кілець категорій або ж будівлі різних напрямків, ви так само можете створити ще кілька модулів, так як їх налаштування незалежні один від одного

Приступаємо до налаштування модуля. Клацніть на посиланні з назвою "кільцева перелинковка матеріалів між категоріями". Спочатку виберіть стан "Опубліковано" і вкажіть загальні настройки, такі як заголовок, позиція в шаблоні.

Примітка: В рамках даної статті розглядається загальний випадок. Тому інші настройки області "Докладно" виберіть так, як вам потрібно.

Тепер необхідно налаштувати прив'язку до пунктів меню. Якщо у вас немає яких-небудь особливих сторінок, які необхідно виключити, то виберіть пункт "На всіх сторінках".

Примітка: Налаштування доступу нічим не відрізняється від настройки доступу інших модулів. Так що якщо у вас вже був налаштований один з модулів за потрібне чином, то ви можете просто скопіювати налаштування.

Так що якщо у вас вже був налаштований один з модулів за потрібне чином, то ви можете просто скопіювати налаштування

Після того, як ви закінчили з зазначенням стандартних параметрів, необхідно приступити до налаштування основних і додаткових параметрів модуля. Вкажіть включати або виключати головну сторінку. Вказати через кому категорії, які необхідно виключити з перелинковки. Бажано вказати порядок категорій через кому. Це дозволить вам створити логічну ланцюг переходів між категоріями і заощадить на запитах в БД. Виберіть кількість посилань, які будуть розраховуватися для кожної сторінки, а так же зрушення при перерахунку. У додаткових параметрах, вкажіть бажані настройки кешування.

Примітка: На відміну від кільцевої перелинковки матеріалів однієї категорії, запити до БД більш вимогливі, тому настійно рекомендуємо залишити кешування включеним, тим більше, що мова йде про довготривалі посиланнях.

Зберігаємо налаштування і дивимося на результат. Наприклад, на цьому сайті цей модуль виглядає наступним чином.

А тепер ще раз дивимося на вимоги і перевіряємо виконалися вони:

  • Автоматичне додавання матеріалів. Виконано. Все відбувається в автоматичному режимі. Встановили і зайнялися іншими справами.
  • Довговічність посилань. Виконано. Старі матеріали будуть містити довговічні посилання. Поступово основа сайту набере вагу в очах пошукових систем.
  • Простота настройки. Виконано. Модуль має досить прості настройки, які налаштовуються в одному місці і окремо для кожного модуля.
  • Можливість обхопити як можна більше матеріалів. Виконано. За рахунок зсуву і особливостей початкового алгоритму, покриватися буде досить багато матеріалів. Безумовно, в рамках розумного і можливого.
  • Повинні бути можливості виключати і вказувати порядок категорій. Виконано. Можна виключати технічні категорії та вказувати порядок проходження розділів, а заодно і економити на обчисленнях в БД.

Отже, як бачите, вийшов цілком зручний і потужний модуль для перелинковки категорій.

Завантажити модуль перелинковки кільцями категорій ви можете за цим посиланням (Важливо! Не забудьте підключити мініатюри або змінити відображення модуля , В іншому випадку поряд з посиланнями з'явиться хрестик в квадратику):

mod_circle_link_cat_by_mat.zip

Додати коментар / відгук

Чи часто ви, заходячи на незнайомі сайти, нестримно рвалися обстежити його вздовж і поперек?
А тепер, просто уявіть, що користувач відкрив сторінку в нижньому лівому кутку, і запитайте "як йому дістатися до сторінки в правому нижньому кутку, якщо він навіть про її існування не знає?

Новости

Отель «Централь» Официальный сайт 83001, Украина, г. Донецк, ул. Артема, 87
Тел.: +38 062 332-33-32, 332-27-71
[email protected]
TravelLine: Аналитика


Студия web-дизайна Stoff.in © 2008