Хакове и добавки. Layer cake и com_weblinks Joomla Synclet уеб връзки php

Нека започнем да разглеждаме компонентите, като разгледаме как основният компонент Weblinks работи в административната част на уебсайт. Този компонент, който е типичен за тази част от уебсайта, е много подобен на другите му компоненти, предназначени да управляват статии, потребители, модули и др.

Програмните файлове за този компонент са изброени по-долу. Всички тези файлове се намират в папката администратор/компоненти/com_weblinks. В останалата част от тази глава всички имена на файлове на компоненти на Weblinks се отнасят спрямо тази начална папка, освен ако не е отбелязано друго. Повечето от файловете са организирани според модела MVC. По-конкретно, всички файлове с изгледи са в подпапката с изгледи, а всички основни файлове с модели и контролери са съответно в подпапките с модели и контролери. Те също така се допълват от инсталационни, конфигурационни и помощни файлове.

Файлове на административната част на компонентаУеб връзки, с изключение на файлове index.html

  • controllers/weblink.php - Основен контролер за редактиране Един контролер за уеблинк
  • controllers/weblinks.php - Основен контролер за компилиране на контролера и показване на списък с уеб връзки на екрана на Weblinks Manager
  • helpers/weblinks.php - Предоставя различни методи, използвани в контролери и изгледи
  • modeli/fields/ordering.php - JformField модел, показващ колоната за подреждане на уеб връзки на екрана на Weblinks Manager
  • modeli/forms/weblink.xml - XML ​​файл, използван в класа Jform-Model Field за оформление на формуляр с полета за въвеждане и редактиране на уеб връзки на екрана
  • models/weblink.php - Модел за модел на уеб връзка с един екран
  • models/weblinks.php - Модел на екранната форма на мениджъра Модел на уеб връзки
  • sql/install.mysql.utf8.sql - SQL файл за създаване на таблица с уеб връзки по време на инсталация
  • sql/uninstall.mysql.ut8.sql - SQL файл за премахване на таблицата с уеб връзки по време на инсталация
  • tables/weblink.php - Предоставя класа Model
  • views/weblink/tmpl/edit_metadata.php - Изходен файл с оформление за редактиране на метаданни за уеб връзки

Административна част на компонента Weblinks

  • views/weblink/tmpl/edit_params.php - Изходен файл с оформление за редактиране на опции за избор на единична уеб връзка
  • views/weblink/tmpl/edit.php - Изходен файл с оформление за редактиране на уеб връзка
  • views/view.html.php - Основен клас на изглед за показване на единична уеб връзка в HTML формат Файл с изходно оформление за мениджър на уеб връзки
  • views/weblinks/view.html.php - Основен клас на изглед за показване на уеб връзки в HTML формат директно на екрана на Weblinks Manager
  • access.xml - XML ​​файл, предоставящ списък с действия за система със списък за контрол на достъпа (ACL).
  • config.xml - XML ​​файл, предоставящ списък с опции за избор на конфигурация на компонента
  • controller.php - Основен клас контролер
  • weblinks.php - Входна точка за заявката
  • weblinks.xml - XML ​​файл, използван за контрол на инсталационния процес

Компонентът Уеб връзки предоставя лесен начин за организиране на съдържание, което включва връзки към други сайтове. Всеки елемент се състои от URL (връзка) и незадължителен текст. Индивидуалните връзки са групирани в категории. Подобно на съдържанието, връзките могат да се създават от хора, които добавят, редактират или публикуват съдържание в даден сайт, а не само администратори, които имат достъп до контролния панел.

Подобно на материалите, връзките могат да се редактират от клиентската страна на уебсайта. Потребителите, които имат разрешение да редактират връзки, ще виждат икона за редактиране, когато преглеждат страници в сайта. По подразбиране редактирането на връзки се подчинява на същите правила като редактирането на съдържание, с изключение на това, че разрешението „собствено редактиране“ не съществува за връзки. Основната разлика между връзките и материалите е, че функциите за контрол на достъпа се прилагат не на ниво отделни връзки, а на ниво компонент като цяло и категориите, към които са присвоени конкретни връзки (тази схема може да се промени в по-късните версии на Joomla! 3).

Както при създаването на материали и други ключови компоненти, за да създадете нов линк в административната част на сайта, трябва да кликнете върху иконата Нов в лентата с инструменти. Във формуляра, който се отваря, въведете заглавие, самата връзка и описание (това поле не е задължително). Можете също така да изберете какво да се случва, когато се щракне върху връзка: например страницата ще се отвори в същия раздел или прозорец на браузъра, в нов раздел или прозорец, в изскачащ модален или безмоден прозорец, със или без контроли за навигация на браузъра . Тези настройки се намират в раздела Основни опции или падащия списък. Експериментирайте с различни опции. С натрупването на опит можете да намерите приложение за всяка от опциите, въпреки че най-често се използва щракване върху връзка в същия прозорец на браузъра.

Ако вашият компютър се повреди или не сте доволни от работата му и искате да поправите компютъра си, нашите компютърни сервизни специалисти ще ви помогнат.

Мениджърът на менюта поддържа създаване на елементи от менюто за три типа оформления на представяне на връзки:

  • Избройте уеб връзки в категория.Това оформление е предназначено да показва списък с всички връзки в избрана категория; За всяка връзка се показва съответното описание. Щракването върху връзка ви отвежда до ресурса, към който сочи връзката.
  • Избройте всички категории уеб връзки.Това оформление изброява всички категории, които съществуват в компонента Уеб връзки, които потребителят има разрешение да преглежда. Всяка заглавка е връзка към оформление на списък с категории, което изброява всички подкатегории в избраната категория.
  • Изпратете уеб връзка.Това оформление съдържа формуляр за създаване на нова връзка.

Няма начин директно да се покаже една връзка със съответното описание на страница. Същият ефект обаче може да се постигне чрез създаване на категория с една връзка и използване на оформление „списък със съдържание на категория“. Ако имате нужда от връзка в менюто, която води директно към друг сайт, тогава за това трябва да изберете елемент от менюто тип Външен URL (Външен линк). За връзките, както и за компонентите, настройките по подразбиране и общите настройки се конфигурират на екрана, който се отваря чрез натискане на бутона Опции в административната част на сайта. Ще видите няколко раздела, съдържащи стандартни настройки за всички връзки на вашия уебсайт. Тези настройки обаче могат да бъдат заменени за връзка по връзка.

Компонентът Web Links е добро решение за управление и показване на някои специфични видове съдържание. Например, често се използва за идентифициране на връзки към външни източници на информация по определена тема. Освен това е удобно да се показват директории, като например директория на производители на продукти или други хора или компании, които дори могат да плащат допълнително за възможността да бъдат включени в този списък. Можете също така да създадете страница с връзки към уебсайтовете на участниците в проекта или препоръчаните блогове. Друга възможност е да поставите връзка към избрани статии за вашата организация или интересна тема на други сайтове. Този компонент може дори да се използва за управление на връзки към документи и други раздели на вашия уебсайт.

Във файла има предложение /включва/joomla.phpвъв функция cleanTextзамени ред

$текст = strip_tags($текст); $text = strip_tags ($text, " " ) ;

Този хак е предназначен самоза снимки, които се вмъкват като нормални изображения. За изображения, вмъкнати от мамбот (mosimage), този хак няма да работи.

Как да направите директна връзка да се показва в компонента com_weblinks

IN weblinks.html.phpтрябва да замените реда:

$link = sefRelToAbs( "index.php?option=com_weblinks&task=view&catid=". $catid ."&id=" . $ред ->id ); $link = $row ->url ;

Как да накарам Joomla да работи на два хоста (домейна) едновременно. Тези. например в локалната мрежа на 10.0.0.15 и от интернет сайта-firmy.ru. Въпреки факта, че и двата адреса са присвоени на една и съща машина.

Първо, целият смисъл на проблема е, че Joomla показва всички изображения и CSS файлове (пътищата им в шаблона) спрямо своята променлива $mosConfig_live_site - основния адрес на сайта, въведен по време на инсталацията. И ако някой се опита да влезе в него с различен адрес, тогава нищо в логиката на работата му не се променя - основният адрес се взема от конфигурационния файл. Например, ако конфигурацията гласи, че Joomla се намира на localhost, тогава достъпът от локалната мрежа, дори до правилно конфигуриран Apache, слушащ адрес 192.168.0.1, няма да промени нищо в нея - src на изображенията все още ще започне с "localhost", който за други машини вече ще има свой собствен localhost. Фокусът на решенията за такива случаи е да се замени променливата $mosConfig_live_site за искания хост, така че всички функции да могат да издават правилните връзки и вече да водят потребителя към. или един или друг виртуален сайт (дайте правилните основни пътища към снимките и основните пътища към адресите). , за тази цел. конфигурация.phpВместо дефиницията на $mosConfig_live_site трябва да напишете своя код. Нещо като:

if ($_SERVER [ "HTTP_HOST" ] =="host1.ru" ) $mosConfig_live_site = "host1.ru" ; else $mosConfig_live_site = "host2.ru" ;

Необходимо е да се обърне внимание, че ако използвате кеш, трябва да имате и две различни кеширащи директории за два хоста, тъй като връзките към различни хостове могат да се пресичат в кеша и тогава потребител от грешната мрежа изобщо няма да стигне никъде . Променливата $mosConfig_cachepath е отговорна за кеша.

Как да накарате два компонента да се показват едновременно на една страница

Ще ви кажа веднага - не всичко е толкова просто. Все пак не е модул. Следователно, първо, струва си да потърсите алтернатива, т.е. Със сигурност популярен компонент идва с модули, които могат да възпроизведат неговата функционалност. Ако няма нищо такова, това е вариант. Може да се направи като модул или на теория може да се вмъкне в шаблон. Идеята е следната - извикване на компонента чрез index2.php (какво и защо - прочетете целия факт). Тези. можете да направите iframe с src="index2.php?option=com_component&no_html=1" в желаната точка на вмъкване за втория компонент. И ще се покаже там. Друго нещо е, че е малко вероятно да бъде възможно напълно да се осигури функционалност. Но все пак това е изход.

Или използвайте конструкцията: mosLoadComponent("com_mycomp" ) ;

Но ако компонентът се изпълнява по този начин, тогава трябва да разберете, че той не знае за вашите манипулации и ще работи според своите $option и $task.

Как да увеличим дължината на заглавието в статия

Трябва да изпълните следните две команди в phpMyAdmin (има специална страница за изпълнение на SQL заявки), просто заменете ###_ с вашия истински префикс на таблица. Максималният възможен брой е 255. В примера се използва 200.

ALTER TABLE `###_content` CHANGE `title_alias` `title_alias` VARCHAR(200) NOT NULL; ALTER TABLE `###_content` CHANGE `title` `title` VARCHAR(200) NOT NULL;

Как да включите пълни новинарски текстове във вашата RSS емисия, а не само техните заглавия

За да направите това, във файла /components/com_rss/rss.php трябва да замените

$item_description = $row ->introtext; $item_description = $row ->пълен текст;

Как мога да направя два сайта на Joomla, използвайки една и съща база данни или използвайки едни и същи файлове?

Що се отнася до използването на една база данни, трябва да напишете една база данни в configuration.php за две машини, но трябва да разбирате какво правите. Тъй като поддържането на сесии за потребители в този случай ще бъде много проблематично, тъй като домейните са различни. Тези. записите за влизане в таблицата #__sessions ще (може) да се припокриват.

Ако искате да използвате същите файлове, без да копирате голяма дистрибуция, тогава по принцип можете да използвате командата “ln -s” в Linux, за да създадете символни връзки към съществуващи файлове и да не ги копирате за новия сайт.

Как да създадете виртуална страница, достъпна на определен адрес в общия дизайн на Joomla (http:/ /site.ru/super_page)

  • Първият начин е да използвате някакъв вид SEF компонент, в който посочвате желания виртуален път за статична страница. Тук има минус - този компонент ще започне да преработва всички останали връзки (и като цяло тези компоненти са много енергоемки и изискват много ресурси, за да работят).
  • Създайте псевдоним за такава страница, като използвате mod_rewriteИ .htaccess. За да направите това ви трябва:
    • Създайте статична страница с текста, от който се нуждаете, разберете нейния ID и адрес (не е необходимо да създавате такава страница, тя може вече да съществува и като цяло това е всеки компонент, не непременно com_content)
    • Измислете псевдоним, нека бъде " супер_пупер"
    • Отворете .htaccess и преди реда "RewriteCond %(REQUEST_FILENAME) !-f" напишете:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • И сега, при условие че Joomla се намира на site.ru, когато отворите връзката http:/ /site.ru/super_puper, ще се отвори необходимата статична страница с вашата информация. Самата връзка "index.php?option=com_content&task=view&id=12" може да бъде каквото ви трябва, основното е, че връзката не бешеабсолютно (т.е. с http:/ /...) и относително ( трябва дазапочнете с index.php?...)

Как да деактивирате кеширането за конкретна статия

Това може да е необходимо, ако използвате мамбота rd_addphp, за да вмъкнете всякакви скриптове, които трябва да генерират произволни числа или произволен текст всеки път, независимо от системата за кеширане на Joomla. За да деактивирате кеширането на определен елемент, трябва да разберете неговия идентификатор (в административния панел, когато редактирате, погледнете адресната лента, ще пише нещо като "...&id=123..."). Така че 123 ще бъде нашият идентификатор на статия. Необходимо е да се замени във файла /components/com_content/content.php приблизително на ред 1600

$cache ->call ("HTML_content::show", $row, $params, $access, $page); if ($row ->id !="123" ) $cache ->call ("HTML_content::show", $row, $params, $access, $page) ; else HTML_content::show ($row, $params, $access, $page) ;

Където 123 е идентификаторът на статията, от който се нуждаете.

Инсталирах много компоненти, но списъкът с компоненти в администраторското меню показва намален брой от тях, а след това пише „Още компоненти...“. Как да покажа всички компоненти.

Имате нужда от ред във файла /administrator/modules/mod_fullmenu.php

$topLevelLimit = 19;

заменен от

$topLevelLimit = 199;

Как да инсталирате копие на компонент

Трябва да се каже, че задачата е изключително трудна. Ако не разбирате как работи компонентът, тогава не трябва дори да опитвате. За тези, които все още искат да отбележат основните точки:

  • В XML файла преименувайте името на компонента в етикета с име
  • След това трябва да преименувате използваните таблици (първо в XML файла и второ във всички компонентни файлове, където и да се използва обектът на базата данни $ база даннии метод setQuery)
  • Преименувайте и всички пътища в компонентите. Пътищата могат да се използват в препратки към себе си или в имената на включени файлове. Най-често това се свежда до търсене на името на подниза com_component и замяната му с ново.

Но този метод не гарантира нищо. При простите това е възможно и ще мине, но при сложните никой не гарантира.

Как да направите една позиция произволно да показва един от модулите, които са й присвоени

  • Вариант 1 - хакнете функцията mosLoadModules. В шаблона, на мястото, където е необходимо да се покаже един от N модула, пишем (обърнете внимание на третия аргумент):
mosLoadModules("позиция", display_setup,true);

И леко коригираме самата горна функция:

функция mosLoadModules( $position ="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) else ( $modules = array () ; ) //добавете тук if ($show_random && sizeof ($modules) >0 ) ( $tmp = $modules [ rand (0,sizeof ($modules) -1) ] ; $modules = array ($tmp) ; // край на оператора if ( count ( $modules )< 1 ) { $style = 0 ; }

Добавихме трети аргумент към него (който се използва в шаблона, където написахме true) и променихме кода.

  • Вариант две е по-безболезнен, ние само променяме шаблона. Но по-трудоемко - трябва да създадем няколко позиции. Първо създаваме няколко нови модулни позиции, например new1 ... new10. Запазване. На правилното място в шаблона, преди да извикате функцията mosLoadModules, добавете необходимия код:
$rand_num = ранд(1,10); //от 1 до 10 - както в името на позицията mosLoadModules ("ново". $rand_num, display_settings);

Вярвам, че с преименуването на папката /administrator/ ще направя сайта си по-сигурен

Тази опция не е стандартна. Но всъщност е възможно, като организирате търсене във файлове на Joomla, да замените всяка поява на такава дума с вашата - секретна. Понякога по-късно могат да се появят грешки за невъзможност за достъп до файлове, но знаейки номера на файла и реда, те могат да бъдат коригирани. Следователно проблемът по принцип е разрешим.

Продължавам да споделям с вас малки, но много полезни скриптове за сайтове, които помагат за подобряване на отношението на търсачките към вашия сайт. Този път ще говорим за правилното свързване на страници.

Първо, нека създадем база данни с адреси на страници и възможни котви за всяка от тях. Ще използваме *.txt файл като основа. Файловата структура ще бъде така:

anchor_1, anchor_2, anchor_n ... anchor_n, anchor_1, anchor_1, anchor_3, anchor nchor_2, котва_3, ..., котва_n

Както можете да видите, по-нататъшното използване на скрипта е възможно с произволен брой адреси на страници и котви за тях. Адресът на страницата се изписва без http://www.site.ru/, т.е. веднага от корена без първата наклонена черта. Адресът е отделен от котвите с точка и запетая, а котвите са разделени само със запетая. Можете също да напишете пълния адрес, просто е по-удобно за мен лично и можете сами да промените пълненето и изхода на резултата, мисля, че интуитивно ще го разберете сами.

И така, беше създадена база данни с връзки и котви за тях, по-долу ще дам пример за PHP код за директно показване на връзки за свързване на сайта:

".$tex2[$tex3].""; } ?>

Ние поставяме този код навсякъде в сайта, който показва 5 произволни връзки от базата данни и произволна котва. По-добре е да разредите котвите, вместо да пишете само 1 на връзката. С правилното свързване на вашия уебсайт веднага ще видите увеличение на трафика и подобрение в други показатели на уебсайта.

Очаквам вашите въпроси в коментарите към тази публикация.

Дата на публикуване: 03 март 2014 г
    Отзиви и коментари:

    Дмитрий:
    Благодаря за скрипта, ще го реализирам. Невъзможно е да копирате изходния код от сайта, той се копира само на малки фрагменти;

    Кирил:
    Благодаря за бележката за копирането, чак сега го видях, скоро ще се опитам да го поправя.

    Алексей Павлов:
    Грешка в реда $tex = explode(":",$sendlist[$count] Трябва ви точка и запетая, а не двоеточие. Промених малко кода, за да стане по-ясен:$котва"; } ?>

    Matrk:
    Статията е напълно безполезна, защото... Блогът има защита срещу копиране на текст.

    Кирил:
    Има малък бъг в js, да, няма време да го поправя, но вероятно някой друг е безполезен, тъй като не е достатъчно умен, в този случай вижте изходния код на страницата и го вземете от там

    Matrk:
    Тези. Трябва ли все пак да прегледам изходния код и да го изчистя от всички боклуци? Ти си забавен.

    Кирил:
    Означава ли, че дължа нещо на някого? Взех ли ти парите, пробваш ли тука, даваш безплатни съвети :))) Безплатно сирене има само в капана за мишки, като остарееш ще разбереш.

    Кирил:
    Махнах джама, радвай се за твое здраве.

    Андрей Копаев:
    1 - вероятно е по-добре да направите това с помощта на mysql база данни, ще работи по-бързо и е по-лесно да добавите 2 - Не разбирам какъв е смисълът да се генерира списък с връзки всеки път? Как това се отразява на ръста на трафика? Възможно ли е зареждане чрез Ajax, т.е. това за хора ли е или за ботове?

    www.сайт:
    За повишение обаче аз лично не съм привърженик на подобни манипулации с ПС.



Свързани публикации