News:

Wondering if this will always be free?  See why free is better.

Main Menu

Eine frage ?

Started by sahara-koeln, December 24, 2006, 07:48:54 PM

Previous topic - Next topic

sahara-koeln

ok das wollte cih jan nur wissen eigentlich bin ich einer der meist alleine was lernt aber bischen hilfe brauche ich dann vorallem wenn oder steht das es .mod sein muss pobwohl es .xml ist ;) vielen dank nochmal und noch dnake das ihr nicht aufgegeben habt :D

sahara-koeln

dort sthet ich sol nach <edit> </edit> und so suchen da steht sowas gar nciht 

ianus

#22
In dem ad – mod heißt die Datei install.xml

Ich erkläre Dir kurz, anhand es ersten Eintrags, wie diese Datei zu lesen ist:

<file name="$boarddir/index.php">
Hier wird Dir gesagt, welche Datei (file) geändert werden muss.
<operation>
Dies heißt nur, ,,mache folgendes".
   <search position="before"><![CDATA[      'trackip' => array('Profile.php', 'trackIP'),]]></search>
Dies heißt, dass Du einen Text suchen sollst, der unter CDATA angegeben ist, und die Änderung vor dieser Stelle stattfinden soll.

<add><![CDATA[
      'admod' => array('Ads.php', 'Ads'),]]></add>
Dies heißt, dass Du den Text der unter CDATA angegeben ist, ergänzen (add) sollst.

</operation>
Dies heißt, das die erste Änderung in dieser Datei beendet ist.

<operation>
Dies heißt wieder nur, ,,mache folgendes".
   <search position="before"><![CDATA[require_once($sourcedir . '/Security.php');]]></search>
Dies heißt wieder, dass Du den Text suchen sollst, der unter CDATA angegeben ist, und die Änderung vor dieser Stelle stattfinden soll.

So geht das weiter, bis Du ein
</file>
siehst. Das heißt dann, das die Anweisungen die für diese Datei gemacht werden müssen, beendet sind.
Erinnere Dich : <file name="$boarddir/index.php">
Hier wird Dir gesagt, welche Datei (file) geändert werden muss.



Beachte dabei, dass Du nur die Dateien verändern muss, die sich auch in dem Ordner Deines Themes befinden.
Die hier beschriebene $boarddir/index.php wirst Du also nicht ändern müssen.

Die nächste Datei die in der angegeben ist
<file name="$themedir/index.template.php">
wirst Du aber ganz sicher ändern müssen.

Die Idee dabei ist, dass SMF sieht, welche Dateien sich in dem Themes Ordner befinden. Braucht SMF eine Datei die sich dort nicht befindet, nimmt er die Datei aus dem Default Ordner.

Beachte dabei die < >. Dies funktioniert ähnlich wie bbcode im Forum, nur dass es eben nicht [ ] sondern < > sind. Auch CData sollst Du nicht suchen, denn Du wirst es nicht finden. Es ist schon wichtig zu erkenne, das in dieser Zeile
<![CDATA[require_once($sourcedir . '/Security.php');]]></search>
nur
require_once($sourcedir . '/Security.php');
gesucht werden soll.
Mach Dir also klar, dass Du es nicht mit reinem Text zu tun hast, sondern mit einer Schrift, die von einer Maschine gelesen werden soll. Diese Leseweise muss man lernen.

Dieser Mod ist einer derjenigen, die sich etwas komplizierter einbauen lassen.
Sei also vorsichtig und denke an das Sichern Deiner Dateien. Wenn nachher ein fehler Auftritt, kannst Du nach und nach die einzelnen Originale wieder hochladen und sehen, in welcher Datei Du den Fehler gemacht hast. Du musst natürlich auch Deine geänderten Dateien sichern. Mach Dir genug Ordner, benenne sie ordentlich und sichere lieber ein mal mehr.

Am besten wäre es, wenn Du die Möglichkeit hättest das Forum auf Deinem eigenen Rechner laufen zu lassen. Vielleicht kennst Du jemandem, der sich mit xampp auskennt.




EDIT
Zu Deinem <edit> steht da gar nicht.

Dort können diverse Befehle auftauchen. Z.B. <add> für ,,Ergänze" aber auch <insert>, was auch ,,Ergänze" meint.
Es gibt dann Zusätze, die <add before>, was heißt, ,,Ergänze davor".
Möglich ist aber auch <search position="before">, kombiniert mit einem <add>
Dies hat die gleiche Wirkung wie <search> kombiniert mit <add before>.

Die Befehle sind vielfältig und so werden immer nur Beispiele gegeben. Mein Beispiel bezieht sich nur auf den Ad-Mod und nur auf diese aktuelle Version. Kommt eine andere SMF Version heraus, oder eine andere Mod Version, gibt es den Beispieltext vielleicht gar nicht mehr. Das Prinzip jedoch, bleibt erhalten.

sahara-koeln


sahara-koeln

<file name="Themes/Proton/index.template.php"> ? so =

ianus

Quote from: sahara-koeln on December 25, 2006, 01:47:15 PM
<file name="Themes/Proton/index.template.php"> ? so =

Ja? Was ist die Frage?

sahara-koeln

ob das so richtig is ? also falls ich es in mein thema installieren will !

ianus

Ah, verstehe. (Glaube ich zumindest)

Genau das ist der Pfad, in dem Du die Datei ändern und suchen musst.

Es werden ,,Abkürzungen" benutzt um den Pfad anzugeben.
<file name="$boarddir/index.php">
Wäre also die Datei index.php unter
/forum/index.php

<file name="$themedir/index.template.php">
ist tatsächlich die index.template.php in dem Ordner
/forum/Themes/Proton/index.template.php

$ = Ist einfach eine Art Satzzeichen
dir = Ist die Abkürzung für Directory, was man hier wohl mit "Ordner" übersetzten kann.
So ist themedir, der Ordner in dem das Theme liegt, Themenordner eben.
Boarddir, ist der Ordner in dem das Forum installiert ist, also Forenordner.
Sourcedir, ist der Ordner in dem die ,,Quellen" liegen. Der Ordner heißt in einen SMF Installation tatsächlich ,,Sources"

Für den Ad-mod musst Du zudem noch folgende Dateien in dem Proton Ordner ändern
BoardIndex.template.php
Display.template.php

sahara-koeln

4.     Değişiklik Yapılacak     ./Themes/Proton/index.template.php                Fehlgeschlagen
5.    Değişiklik Yapılacak    ./Themes/Proton/BoardIndex.template.php    erfolgreich
6.    Değişiklik Yapılacak    ./Themes/Proton/Display.template.php               Fehlgeschlagen


was nun :(

ianus

Ok, wir verstehen uns offensichtlich noch nicht so recht, obwohl die Idee nicht schlecht ist.

<file name="$boarddir/index.php">
Zeigt an, welche Datei geändert werden muss und wo Du sie findest. An dieser Zeile wird aber nichts geändert.

<operation>
   <search position="before"><![CDATA[      'trackip' => array('Profile.php', 'trackIP'),]]></search>
<add><![CDATA[
      'admod' => array('Ads.php', 'Ads'),]]></add>
</operation>


Zeigt an, was geändert werden muss.

sahara-koeln

ich komme nicht mit sorry kannst du erweiter antowrten danke

ianus

Ich glaube folgendes.
Du hast versucht, den mod über den Paketmanager zu installieren.

Das glaube ich,
weil dieses hier
4.     Değişiklik Yapılacak     ./Themes/Proton/index.template.php                Fehlgeschlagen
5.    Değişiklik Yapılacak    ./Themes/Proton/BoardIndex.template.php    erfolgreich
nach der Ausgabe aussieht, die der Paketmanager anzeigt.

Daraus habe ich geschlossen,
dass Du versucht hast die Pfade in dem Adsense – mod anzupassen.
Du hast also versucht diesen Teil
<file name="$boarddir/index.php">
zu ändern, damit der mod in Deinem Thema installiert wird.

Das sieht dann nachher vielleicht so aus (nur eine Vermutung)
<file name="$boarddir/Mein Thema/index.php">


Ich habe nun versucht Dir zu erklären,
dass Du tatsächlich per Hand eine bestimmte Stelle in dem index.php suchen musst. Wenn Du die richtige Stelle gefunden hast, muss Du dort tatsächlich den angegebenen Text einfügen.

Stell Dir einfach vor, Du willst von dieser Seite
http://mods.simplemachines.org/
die orange Überschrift kopieren, und hier einfügen.

Der Maschinentext würde lauten
<file name="http://mods.simplemachines.org/">
<operation>
<search position=><![CDATA[Where modifications roam and play...</search>
<copy all>
</operation>

<file name="http://www.simplemachines.org/community/index.php?topic=137122.msg875401#msg875401">
<operation>
<search position=><![CDATA[ich komme nicht mit sorry kannst du erweiter antowrten danke</search>
<klicke auf Ändern>
<paste all>
</operation>

Das ist nur ein Beispiel und funktioniert nicht wirklich!
Wenn Du aber auf die Mod Seite gehst, mit den orangen Text kopierst und ihn dann in deinen Beitrag einfügst, dann weist Du, was gemeint ist mit manuell (also wirklich per Hand) ändern.
Es hilft nicht
<file name="http://mods.simplemachines.org/">
durch
<file name="/mein Thema/http://mods.simplemachines.org/">
zu ersetzten.

Als tatsächliches Beispiel:
Die /themenordner/Boardindex.template.php sieht vorher so aus

<?php
// Version: 1.1; BoardIndex

function template_main()
{
global $context$settings$options$txt$scripturl$modSettings;


// Show some statistics next to the link tree if SP1 info is off.
echo '
<table width="100%" cellpadding="0" cellspacing="0">


Nach der Änderung

<?php
// Version: 1.1; BoardIndex

function template_main()
{
global $context$settings$options$txt$scripturl$modSettings;


//Display ads on the board index
$ads show_boardAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);
// Show some statistics next to the link tree if SP1 info is off.
echo '
<table width="100%" cellpadding="0" cellspacing="0">



Es gilt aber immer noch, dass es wichtig ist, genau zu beschreiben, was Du gemacht hast.
Ich kann, wie Du siehst, nur raten, was Du gemacht hast.
Wenn ich falsch geraten habe, habe ich Zeit verschwendet und Dir etwas erklärt, dass eigentlich nicht notwendig war.
Meine Anleitung ist, meiner Meinung nach, mittlerweile so deutlich, dass ich dem einfach nichts mehr hinzu fügen kann.

Und vielleicht ein kleiner Rat. Du musst Dir, wenn Du wirklich ein Forum gepflegt betreiben willst, ein paar Grundlagen schaffen. Fang mit dem default Thema an und wirf einen Blick in die CSS Datei. Ändere dort ein paar Farben. Dann wirst Du sehen, wie weitreichend die Auswirkungen auf das gesamte Forum sind.
Ein mod greifen direkt in den php code ein. Das ist in etwa so, als wenn Du im Inhaltsverzeichnis eines Buches die Seitenzahlen änderst und zugleich ein paar Seiten hinzufügst. (Jaja, schlechtes Beispiel).
Du musst nicht selbst PHP code schreiben können, doch wenn Du so etwas siehst
########## Directories/Files ##########
# Note: These directories do not have to be changed unless you move things.
$boarddir = 'K:\\XAMPPServer\\xampp\\htdocs\\www\\forum'; # The absolute path to the forum's folder. (not just '.'!)
$sourcedir = 'K:\\XAMPPServer\\xampp\\htdocs\\www\\forum\\Sources'; # Path to the Sources directory.

musst Du wissen, was gemeint ist.

ianus

#32
Ich habe die Änderungen, für den Ad-mod hier einmal in lesbarerer Form.
In file -> heißt "In der Datei"
Find: -> heißt "Finde"
Add after: -> heißt: "Füge dahinter ein"
Add before: -> heißt: "Füge davor ein"
Replace with: -> heißt: "Ersetze durch"
Als Beispiel:
Find:
Hier steht irgendetwas
'trackip' => array('Profile.php', 'trackIP'),
Hier steht auch irgendetwas
Add after:
'admod' => array('Ads.php', 'Ads'),

Sieht dann so aus:
Hier steht irgendetwas
'trackip' => array('Profile.php', 'trackIP'),
'admod' => array('Ads.php', 'Ads'),
Hier steht auch irgendetwas



Nun die gesammte Liste der Änderungen in lesbarer Form

Installation Instructions
In file $boarddir/index.php
Find:

'trackip' => array('Profile.php', 'trackIP'),



Add after:


'admod' => array('Ads.php', 'Ads'),




Find:

require_once($sourcedir . '/Security.php');



Add after:


require_once($sourcedir . '/LoadAds.php');




Find:

loadPermissions();



Add after:


// Load all the ads up
loadAds();





In file $sourcedir/Subs.php
Find:

loadLanguage('Admin');



Add after:


loadLanguage('Ads');




Find:

'manage_themes' => '<a href="' . $scripturl . '?action=theme;sa=admin;sesc=' . $sc . '">' . $txt['theme_admin'] . '</a>',



Add after:


'edit_addmod' => '<a href="' . $scripturl . '?action=admod">' . $txt['ad_management'] . '</a>',




In file $themedir/index.template.php
Find:

<body>';



Add after:


//Display ads on the top of the page
$ads = show_topofpageAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);






Find:

</td>



Add after:

';
//Welcome Ads
$ads = show_welcomeAds();

if(!empty($ads))
{
echo '<td class="windowbg2">';
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
echo '</td>';
}
unset($ads);
echo '





Find:

template_menu();



Add after:


//Below the menu ads
$ads = show_indexAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);

//Tower left Ads
$ads = show_towerleftAds();
if(!empty($ads))
echo '<table><tr><td valign="top">', $ads['type']==0 ? $ads['content'] : eval($ads['content']) ,'</td><td width="100%" valign="top">';

unset($ads);
//Tower Right Ads
$ads = show_towerrightAds();
if(!empty($ads))
echo '<table><tr><td width="100%" valign="top">';
unset($ads);






Find:

// Show the "Powered by" and "Valid" logos, as well as the copyright. Remember, the copyright must be somewhere!




Add before:


//Close table for towerright ads
$ads = show_towerrightAds();
if(!empty($ads))
echo '</td><td valign="top">', $ads['type']==0 ? $ads['content'] : eval($ads['content']) ,'</td></tr></table>';

unset($ads);
//Close table for towerleft ads
$ads = show_towerleftAds();
if(!empty($ads))
echo '</td></tr></table>';
unset($ads);

//Show ads on the bottom of the page
$ads = show_bottomAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);





In file $themedir/BoardIndex.template.php
Find:

// Show some statistics next to the link tree if SP1 info is off.



Add before:


//Display ads on the board index
$ads = show_boardAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);





In file $themedir/Display.template.php
Find:

global $context, $settings, $options, $txt, $scripturl, $modSettings;



Add after:


//Display ads on the thread page
$ads = show_threadAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);





Find:

// Get all the messages...
while ($message = $context['get_message']())
{



Replace with:

//Ad Counter
$adcounter =0;
// Get all the messages...
while ($message = $context['get_message']())
{
$adcounter++;




Find:

</td></tr>';
}



Replace with:

</td></tr>';
if ($adpost = show_posts($adcounter))
{
echo '

<tr><td style="padding: 1px 1px 0 1px;">
<table width="100%" cellpadding="3" cellspacing="0" border="0">
<tr><td class="windowbg3">
<table width="100%" cellpadding="5" cellspacing="0" style="table-layout: fixed;">
<tr>
<td valign="top" width="16%" rowspan="2" style="overflow: hidden;">
<b>', $context['forum_name'], '</b>
<div class="smalltext">
</div>
</td>
<td valign="top" width="85%" height="100%">
<table width="100%" border="0"><tr>
<td valign="middle"><img src="', $message['icon_url'] . '" alt="" border="0" /></td>
<td valign="middle">
<div style="font-weight: bold;" id="subject_', $message['id'], '">
<a href="', $message['href'], '">', $message['subject'], '</a>
</div>
<div class="smalltext">« <b>', !empty($message['counter']) ? $txt[146] . ' #' . $message['counter'] : '', ' ', $txt[30], ':</b> ', $message['time'], ' »</div></td>
<td align="', !$context['right_to_left'] ? 'right' : 'left', '" valign="bottom" height="20" style="font-size: smaller;">';
if ($context['can_reply'] && !empty($options['display_quick_reply']))
echo '
', $reply_button, '';

// So... quick reply is off, but they *can* reply?
elseif ($context['can_reply'])
echo '
', $reply_button, '';

// Can the user modify the contents of this post?
if ($message['can_modify'])
echo '
', $modify_button, '';

// How about... even... remove it entirely?!
if ($message['can_remove'])
echo '
', $remove_button, '';

// What about splitting it off the rest of the topic?
if ($context['can_split'])
echo '
', $split_button, '';
echo '
</td>
</tr></table>
<hr width="100%" size="1" class="hrcolor" />
<div class="post">', $adpost['type'] == 0 ? $adpost['content'] : eval($adpost['content']) , '</div>
</td>
</tr>
<tr>
<td valign="bottom" class="smalltext" width="85%">
<table width="100%" border="0" style="table-layout: fixed;"><tr>
<td colspan="2" class="smalltext" width="100%">
</tr><tr>
<td valign="bottom" class="smalltext" id="modified_', $message['id'], '">
</td>
<td align="', !$context['right_to_left'] ? 'right' : 'left', '" valign="bottom" class="smalltext">
<img src="', $settings['images_url'], '/ip.gif" alt="" border="0" />&nbsp;', $txt[511], '
</td>
</tr></table>
</tr>
</table>
</td></tr>
</table>
</td></tr>';
}

}




In file $themedir/MessageIndex.template.php
Find:

global $context, $settings, $options, $scripturl, $modSettings, $txt;



Add after:


//Display Ads on the Message index
$ads = show_threadindexAds();
if(!empty($ads))
if($ads['type']==0)
echo $ads['content'];
else
eval($ads['content']);
unset($ads);






In file $sourcedir/ManagePermissions.php
Find:

'pm' => array(




Replace with:

'ad_manage' => array(
'ad_manageperm' => false,
),
'pm' => array(




Um dies selbst zu machen, eventuell für andere mods, gibt es ein geniales Werkzeug.
(Meine Hochachtung!)

http://server.daniel15.com/smf_xml/modification.php



Advertisement: